我正在使用Git,并且试图将本地分支与远程分支同步。我总是在本地和远程存储库中保留一个“ master”和一个“ develop”分支。创建新功能时,会为其创建一个分支并命名为:feature / my-new-feature-name。
完成该功能后,我将所有更改提交并推送到远程存储库(我将Gitlab用于我的远程存储库)。然后,我将功能分支合并到开发分支,并使用GitLab接口删除源分支(功能分支)。此时,该功能已合并到developer分支中,仅在远程存储库中删除。
完成这些步骤后,我希望能够将本地分支同步到远程分支的状态。也就是说,我想将功能分支合并到develop中,并从本地存储库中删除。
为此,我运行以下命令:
git checkout develop
git pull
git branch -d feature/my-new-feature-name
当我这样做时,Git向我显示以下消息:
error: The branch 'feature/my-new-feature-name' is not fully merged.
If you are sure you want to delete it, run 'git branch -D feature/my-new-feature-name'.
我当然可以使用-D标志运行命令,但是我想理解为什么Git表示分支没有合并。
我在Stack Overflow中发现了有关此问题的几个问题,但是在所有这些问题中,人们建议运行此命令以检查合并的分支:
git branch --merged
当我运行此命令时,Git仅向我显示develop分支,就好像功能/我的新功能名称未合并一样。但是实际上,feature / my-new-feature-name被合并(在远程仓库中)并拉到本地。我还可以通过运行git log
来查看我的合并提交。为什么Git不能检测到我的功能分支已合并到开发中?
答案 0 :(得分:0)
与开发相比,您的本地分支缺少一个提交:由您的PR feature-branch > develop
进行的合并提交。
要么您只是忽略git的提示,然后按照您的考虑使用branch -D
,要么现在也可以(即使只是尝试一下)将开发合并到您的功能分支中(在此快速前进)点),branch -d
就不会再抱怨了。
答案 1 :(得分:0)
问题是合并时将壁球标志设置为true。只有在不挤压的情况下合并,Git才会检测到合并。