我想在删除本地分支后更好地理解警告消息
警告:删除
'old_branch'
已合并'refs/remotes/origin/old_branch'
但尚未合并到的分支HEAD
.
cjh*_*eal 57
这只是警告您已将更改推送到分支origin
,但它们未合并master
,因此您只是在本地删除它.
它警告您不再拥有该分支的本地副本,但它存在于 origin
如果您还想删除远程分支,请使用 git push --delete origin old_branch
Kar*_*ldt 30
假设您目前已master
签出,则表示所做的更改old_branch
不存在master
.然而,他们都出现在old_branch
上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 或任何其他“中央存储库”范例,它们太脆弱而无法成功。比我了解更多的人可能可以更好地阐述这种“双向沟通”会导致的所有问题。
要添加其他答案,这也可能意味着更改可能会合并到主数据库,只是您的主数据库的本地副本尚未反映出来。无论哪种方式,这都只会通知您母版的本地副本没有在原点上推送的更改。合并/未合并...也许,也许不是
这意味着你的本地分支old_branch
是最新的远程分支old_branch
远程origin
但不合并到分支master
被认为是回购的主要分支.
这只是git的预防措施.它给你一个提示:也许你在topic-branch中完成了你的工作而忘记将它合并到主分支?
更新
Git警告你不要丢失你的更改.例如,如果你没有使用old_branch
master git,那么不要让你甚至删除未合并到master的分支(它允许,但是使用key -D
是force-delete
选项).