今天我在帮助一位同事时发现,git branch -D
和git branch -d
有略微不同的功能。根据git帮助文档:
-d --delete delete fully merged branch
-D delete branch (even if not merged)
我能理解避免随意删除分支的想法,但是Git如何确定何时可以使用branch -d
命令?有哪些情况下可以正确地使用branch -d
命令?
今天我在帮助一位同事时发现,git branch -D
和git branch -d
有略微不同的功能。根据git帮助文档:
-d --delete delete fully merged branch
-D delete branch (even if not merged)
我能理解避免随意删除分支的想法,但是Git如何确定何时可以使用branch -d
命令?有哪些情况下可以正确地使用branch -d
命令?
将-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
分支没有这些提交,Git希望在将这些更改合并到当前分支之前确认您确实想要删除该分支。
master
),使用 -d
就足够了。来自文档的说明:
如果您执行了删除一个分支。该分支必须在其上游分支中完全合并,或者如果没有使用 --track 或 --set-upstream 设置上游,则在 HEAD 中进行合并。
merge --squash
(即该分支的不是所有修订版本都包含在 master
中)或者您没有将该分支合并到任何地方,因为您意识到您正在做错事并想要摆脱这个分支,需要使用 -D
:
无论其合并状态如何都删除一个分支。
什么情况下应该正确使用 branch -d 命令?
当一个 pull request 已经被合并到主分支后,就可以执行此操作。假设该分支只用于特定项目且该项目已完成,则可以在合并后删除从中发起 pull request 的分支。