只是想在删除本地分支后更好地了解警告消息
警告:删除
'old_branch'
已合并到'refs/remotes/origin/old_branch'
,但尚未合并到 的分支HEAD
。
只是想在删除本地分支后更好地了解警告消息
警告:删除
'old_branch'
已合并到'refs/remotes/origin/old_branch'
,但尚未合并到 的分支HEAD
。
这只是警告您已将更改推送到 上的分支origin
,但它们并未合并到当前签出的分支中,因此您只是在本地删除它。
它警告您,您不再拥有该分支的本地副本,但它存在于origin
如果您还想删除远程分支,请使用git push --delete origin old_branch
假设您当前已master
签出,这意味着在 中所做的更改old_branch
不存在于master
. 但是,它们存在old_branch
于origin
.
这意味着您的本地分支与远程远程old_branch
分支是最新的,但它没有合并到被认为是 repo 中的主分支的分支。old_branch
origin
master
这只是 git 的预防措施。它给了你一个提示:也许你在主题分支中完成了你的工作而忘记将它合并到主分支?
更新
Git 会警告您不要丢失更改。例如,如果您没有old_branch
在主 git 上,则不允许您删除未合并到主 git 的分支(当然它允许,但带有选项的键-D
)force-delete
。
要添加到其他答案,这也可能意味着更改可能会合并到主控,只是您的主控本地副本尚未反映它。无论哪种方式,这只会告诉您,您的 master 的本地副本没有您在 origin 上推送的更改。合并/未合并...也许,也许不是
这里的几个答案是完全正确的,但似乎还没有完全解决这个问题。所以我会再尝试一次。
在我执行拉取请求并删除 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
仍然存在,即使它没有本地代表当然,这不是真的,因为origin/myfeature
PR 完成时分支被破坏了,而你的本地计算机并不知道这一点。所以,Git 给了你警告。
因为
PR 完成 ==> 远程分支已删除
范式是如此普遍,如果远程分支可能以某种方式通知本地分支发生了这种情况,那就太好了。但是 Git 在“单向通信”方面做得非常好,你只请求信息但从不发送未请求的信息。一个领域的“双向”通信可能会让人们在其他领域也需要它,很快我们就会回到 Git,看起来更像 SVN 或任何其他太脆弱而无法成功的“中央存储库”范式。比我了解更多的人可能会更好地阐述这种“双向沟通”会导致的所有问题。