所有这些类似的删除命令有什么区别?

时间:2016-09-03 23:36:25

标签: git

我见过几种删除分支的方法:

  

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的分支的本地和远程分支。我需要运行两个单独的命令吗?所有这些命令有什么区别?

1 个答案:

答案 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标志设置为跟踪它。如果你背对背地运行这些,那么第二次推送实际上不会推送任何东西,只需启用跟踪。