问题描述
我对以下 git 工作流程有疑问:
- checkout master
- pull -r origin master
- checkout new_feature
- rebase master
- checkout master
- merge --squash new_feature
- commit -m "F"
- push origin master
现在您将得到以下设置,假设在 new_feature 分支上发生了一些提交 C、D、E:
Master A --B --------------- F
\
new_feature \ -- C -- D -- E
Local Master 和 Origin Master 指向 F。 F 提交涉及C、D、E。
现在我想通过运行以下命令删除 new_feature 分支:
branch -d new_feature
错误:分支“new_feature”未完全合并。 如果您确定要删除它,请运行“git branch -D new_feature”。
为什么我在这里得到错误,为什么 git 不知道,分支已经完全合并,只是用 squash 命令?
(即使是 git diff 也不显示任何差异)
解决方法
好吧,使用这些命令,new_feature 分支不会正式合并,因为它不是合并提交的父节点。 git 不会检查您的更改实际上是否已合并。你知道,但对于 git 来说,了解它并非易事。
我已经尝试了你的工作流程,然后我再次重新合并了被压扁合并的分支,然后它可以被删除。
这实际上不是错误,而是防止您丢失工作的检查。