什么是“git branch -d”的用例

时间:2014-12-22 15:49:29

标签: git

我今天正在帮助一名同事,并发现git branch -Dgit branch -d做的事略有不同。从git帮助文档:

-d --delete  delete fully merged branch
-D           delete branch (even if not merged)

我可以理解避免任意删除分支,但git如何确定何时允许branch -d?有人会何时正确使用branch -d

3 个答案:

答案 0 :(得分:13)

-D视为强制分支删除。它将删除分支,即使它尚未合并到您当前所在的分支中。

然而,

-d会警告你并且在合并之前不会删除分支。

例如

您已将master分支分支到分支A。提交到A。如果您再次切换到master分支并尝试git branch -d A,则会收到类似的消息

git branch -d A
error: The branch 'A' is not fully merged.
If you are sure you want to delete it, run 'git branch -D A'.

这是因为您在A分支中提交了master没有的提交,并且确保要在将这些更改提取到当前分支之前删除它。

答案 1 :(得分:2)

当一个分支完全合并时(即该分支的所有修订都被推送到它的相应位置) 远程或分支合并到master),-d就足够了。来自docs:

  

删除分支。分支必须在其上游分支中完全合并,或者如果没有使用--track或--set-upstream设置上游,则必须在HEAD中合并。

如果您执行了merge --squash(即并非所有此分支的修订都包含在master中),或者您没有将分支合并到任何地方,因为您认识到您做错了并且想要扔掉这个分支,需要-D

  

删除分支,不论其合并状态如何。

答案 2 :(得分:1)

什么时候会有人正确使用branch -d?

一旦将pull请求合并到主分支中,就会执行此操作。合并之后删除请求的分支很好被删除(假设分支仅用于特定项目并且项目已完成)。