git branch -d发出警告


90

我只是想在删除本地分支后更好地了解警告消息

警告:删除'old_branch'已合并到 'refs/remotes/origin/old_branch',但尚未合并到的分支HEAD


27
如果合并--squash您的old_branch,则在本地删除它时总是会收到此警告。挤压索引时将重置,因此与old_branch HEAd不匹配
Antoine Wils

尽管其他答案是正确的,但至少在我看来,Antoine的评论才是原因。
Squrppi

Answers:


66

这只是警告您已将更改推送到上的分支origin,但它们未合并到中master,因此您仅在本地将其删除。

警告您,您不再有该分支的本地副本,但是它存在于 origin

如果还要删除远程分支,请使用 git push --delete origin old_branch


9
是的,master不参与其中。您的意思是当前分支。;)
费尔南多·埃斯皮诺萨

1
即使我执行了git branch -d branch_name仅应在本地删除分支的操作,我仍收到此警告。为什么在这种情况下需要警告?
Akshay Damle

2
但是origin / old_branch合并到了origin / master中。后来我在主分支上做了git pull origin。还是一样的错误。这不是GH中的错误吗?
vikramvi

36

假设您当前已master签出,则意味着old_branch中没有所做的更改master。然而,他们出现在old_branchorigin


4
是的 这是正确的答案!“但尚未合并到HEAD”,HEAD此处引用本地master分支的HEAD。
Devy 2015年

3
但是origin / old_branch合并到了origin / master中。后来我在主分支上做了git pull origin。还是一样的错误。这不是GH中的错误吗?
vikramvi

1
@vikramvi假定您已经master在本地签出,但是任何提交的SHA都已更改,它仍然可能发生;即你重订origin/old_branchorigin/master。即使是快进,这也会为的每个新提交生成一个新的SHA origin/old_branch,从而使gitold_branch在将更改拉到本地master分支后,将本地中的原始SHA合并为未合并。您可以看到此答案以及此答案的发生原因。

8

这意味着您的本地分支old_branch与远程分支old_branch上的远程分支是最新的,origin但未合并到master被认为是仓库中主要分支的分支。

这只是git的预防措施。它给您一个提示:也许您在主题分支中完成了工作,却忘记将其合并到主分支中了吗?


更新

Git警告您不要丢失更改。例如,如果您没有old_branch掌握master的git,那么甚至不允许您删除未合并到master的分支(它允许,但是带有key-Dforce-delete选项)。


7
不一定master,但是目前HEAD
冷冻火焰

因此,-D是当您尚未与任何远程分支共享正在删除的分支(实际上是提交)时。警告是通知您您已与远程共享​​了该分支(提交),但该分支并未合并到HEAD中。HEAD是HEAD,remote / refs / HEAD不一样。但是,如果我对远程HEAD和本地HEAD之间的区别有误,请纠正我。
艾瑞克(Eric)

7

要添加其他答案,这也可能意味着更改可能会合并到主数据库,只是您的主数据库的本地副本尚未反映出来。无论哪种方式,这都只会通知您母版的本地副本没有在原点上推送的更改。合并/未合并...也许,也许不是

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.