我希望在删除本地分支后更好地理解警告消息
警告:删除已合并到的分支
'old_branch'
'refs/remotes/origin/old_branch'
,但尚未合并到HEAD
。
答案 0 :(得分:48)
这只是警告您已将更改推送到origin
上的分支,但它们未合并到master
,因此您只是在本地删除它。
警告您不再拥有该分支的本地副本,但它存在于origin
如果您想删除远程分支,请使用git push --delete origin old_branch
答案 1 :(得分:27)
假设您目前已签出master
,则表示old_branch
中的master
所做的更改不存在。但是,他们 出现在old_branch
上的origin
。
答案 2 :(得分:5)
这意味着您的本地分支old_branch
与远程old_branch
上的远程分支origin
保持同步,但它未合并到被认为是分支master
的分支old_branch
回购中的主要分支。
这只是git的预防措施。它给你一个提示:也许你在topic-branch中完成了你的工作而忘记将它合并到主分支?
<强>更新强>
Git警告你不要丢失你的更改。例如,如果您在主git上没有-D
,那么就不允许您删除未合并到主服务器的分支(它允许,但使用密钥force-delete
,这是{{1}}选项)。
答案 3 :(得分:4)
要添加到其他答案,这也可能意味着更改可能会合并到master,只是您的本地master副本尚未反映它。无论哪种方式,这只会告诉您主人的本地副本没有您在原点上推送的更改。合并/不合并...也许,也许不合并
答案 4 :(得分:2)
这里的几个答案是完全正确的,但似乎还没有完全解决问题。所以我会再试一次。
在我执行拉取请求并删除 GitHub/Bitbucket/etc 上的一个分支之后。通过完成 PR 自动完成,然后我在本地删除分支时看到此错误:warning: deleting branch 'old_branch' that has been merged to 'refs/remotes/origin/old_branch', but not yet merged to HEAD.
GitHub 或任何远程存储库都不知道您机器的本地状态。
当拉取请求完成并提供删除原始 PR 分支时,它不知道您的本地分支。
此时,您删除本地分支。您的本地存储库/计算机知道此时间表:
myfeature
==> origin/myfeature
(myfeature
已经推送到远程仓库)myfeature
origin/myfeature
仍然存在,即使它没有本地表示当然,这不是真的,因为在 PR 完成时 origin/myfeature
分支被销毁了,但是您的本地计算机并不知道这一点。所以,Git 给了你警告。
因为
<块引用>PR 完成 ==> 远程分支已删除
范式是如此普遍,如果远程分支以某种方式将这种情况通知本地分支就好了。但是 Git 在“单向通信”方面做得非常好,您只请求信息,但从不发送未请求的信息。一个领域的“双向”通信可能也会让人们在其他领域也想要它,很快我们就会回到 Git,看起来更像是 SVN 或任何其他太脆弱而无法成功的“中央存储库”范式。比我更了解的人可能会更好地阐述这种“双向沟通”会导致的所有问题。