git分支-d发出警告

git分支-d发出警告,git,Git,只是想更好地理解我删除本地分支后的警告消息 警告:正在删除已合并到的分支“旧分支” 'refs/remotes/origin/old_branch',但尚未合并到HEAD 假设您当前签出了master,这意味着在old_分支中所做的更改在master中不存在。但是,它们存在于origin上的old_分支中,这只是警告您,您已将更改推送到origin上的分支,但它们未合并到当前签出的分支中,因此您仅在本地删除它 它警告您,您不再拥有该分支的本地副本,但它存在于origin 如果您还想删除远程分支,

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

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


假设您当前签出了
master
,这意味着在
old_分支中所做的更改在
master
中不存在。但是,它们存在于
origin
上的
old_分支中,这只是警告您,您已将更改推送到
origin
上的分支,但它们未合并到当前签出的分支中,因此您仅在本地删除它

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


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

将其添加到其他答案中,这也意味着更改可能会合并到master,只是您的master本地副本尚未反映它。无论哪种方式,这都只是通知您,主控形状的本地副本没有您在源上推送的更改。合并/未合并…可能,可能不

这意味着您的本地分支机构
旧分支机构
与远程
原点上的远程分支机构
旧分支机构
是最新的,但未合并到分支机构
主分支机构
,该分支机构被视为回购协议中的主要分支机构

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


更新


Git警告您不要丢失更改。例如,如果主git上没有您的
旧分支
,那么甚至不允许您删除未合并到主git的分支(它允许,但使用键
-D
,即
强制删除
选项)。

这里的几个答案完全正确,但似乎没有完全澄清问题。因此,我将尝试另一种尝试

问题的解释 在我执行拉取请求并通过完成PR自动删除GitHub/Bitbucket/等上的分支后,我在本地删除分支时看到此错误:
警告:删除已合并到“refs/remotes/origin/old_branch”但尚未合并到HEAD的分支“old_branch”。

理解时间线 GitHub或任何远程存储库都不知道您机器的本地状态

当拉取请求完成并提供删除原始PR分支时,它不知道您的本地分支

此时,您将删除本地分支。您的本地回购/计算机知道此时间线:

  • myfeature
    ==>
    origin/myfeature
    myfeature
    已推送到远程回购)
  • 然后删除
    myfeature
  • 因此,
    origin/myfeature
    仍然存在,即使它没有本地表示
  • 当然,这不是真的,因为当PR完成时,
    origin/myfeature
    分支被破坏,但是您的本地计算机不知道这一点。所以Git给了你警告

    GitHub/BitBucket等不应该让这更容易吗? 因为

    PR完成==>远程分支已删除


    范例是如此普遍,如果远程分支以某种方式将此事件通知本地分支,那就太好了。但是Git在“单向通信”方面做得非常好,您只请求信息,而从不发送未请求的信息。一个领域中的“双向”通信可能会让人们在其他领域也需要它,很快我们又回到Git,看起来更像SVN或任何其他太脆弱而无法成功的“中央存储库”范例。比我了解得更多的人可能可以更好地阐述这种“双向通信”可能会导致的所有问题。

    不一定是
    master
    ,而是当前的
    。因此,-D是指没有与任何远程分支共享要删除的分支(实际上是提交)。虽然警告是通知您已经与远程服务器共享了分支(提交),但它只是没有合并到HEAD中。头部为头部,远程/参考/头部不同。但是,如果我在远程头和本地头之间的区别上有错误,请纠正我。如果您合并--挤压您的旧分支,则在本地删除它时,您将始终收到此警告。当挤压时,索引被重置,因此与旧的分支标题不匹配,而其他答案是正确的,Antoine的评论是原因,至少在我的案例中是这样。是的。这是正确的答案!“但尚未合并到
    ”,此处的
    引用本地主分支的头。但origin/old_分支合并到origin/master。后来我在master branch上做了git拉原点。还是一样的错误。这不是GH中的错误吗?@vikramvi假设您已在本地签出
    master
    ,如果任何提交的SHA发生更改,它仍然可能发生;i、 e.您将
    原点/旧分支
    重设为
    原点/主分支
    。即使是快进,这也会为来自
    源代码/old_分支
    的每个新提交生成一个新的SHA,使git在将更改拉到本地
    主分支
    后,将本地
    旧分支
    中的原始SHA视为未合并。您可以查看和了解发生这种情况的原因。是的,
    master
    与此无关。你指的是现在的分支机构,而不是现在的分支机构<代码>;)
    即使我执行了
    git branch-d branch\u name
    操作,也会收到此警告,该操作应该只在本地删除分支。为什么在这种情况下需要警告?但是origin/old_分支合并到origin/master中。后来我在master branch上做了git拉原点。还是一样的错误。这不是吗