我见过几种删除分支的方法:
git push origin --delete --force rc
git branch -D rc
git branch -dr origin / rc
在blog我看到一个人做了另一种删除:
删除旧名称远程分支并推送新名称本地分支。
git push origin :old-name new-name
重置新名称本地分支的上游分支。
git push origin -u new-name
对于博客示例,看起来他两次做同样的事情。他不是只是把新名字推到了遥控器上吗?我不认为这里需要第二个命令。
我在stackoverflow看到了一种流行的方式。我尝试了最受欢迎的答案:
git branch -d branch_name
git push origin --delete <branchName>
我发现我需要运行这两个命令(我使用-D代替-d)来可靠地删除本地和远程。
我想要一种可靠的方法来删除名为rc的分支的本地和远程分支。我需要运行两个单独的命令吗?所有这些命令有什么区别?
答案 0 :(得分:2)
是的,您必须运行两个命令,一个用于删除本地分支,另一个用于远程,但如果您想经常这样做,可以轻松创建别名。
git push origin --delete --force rc
删除远程分支
git branch -D rc
删除本地分支,无论它是否已合并
git branch -dr origin/rc
删除遥控器的本地跟踪分支。这会在第一个命令时自动发生。此命令最不常见,仅在从其他计算机上删除远程分支时才需要,现在此本地存储库只需要修剪过时的跟踪分支。
-d
和-D
之间的唯一区别是删除未合并的本地分支。 -D
告诉git,如果没有合并,你就不在乎。这仅适用于当地分支机构。
push ref spec的用法是
git push <remote> <local name>:<remote name>
所以这对我来说很简单易记,因为如果你把本地名称留空,那么它就不会有效地删除该远程名称。
git push origin :oldBranch
至于博客
git push origin :old-name new-name
这会删除旧分支并以新名称再次推送同一分支。实际上,他已将该分支重命名为分支,但它没有被跟踪,因此您需要:
git push origin -u new-name
即使它是相同的分支,它在技术上被跟踪为不同的远程分支,因此-u
标志设置为跟踪它。如果你背对背地运行这些,那么第二次推送实际上不会推送任何东西,只需启用跟踪。