来自git branch
的手册页:
删除分支。分支必须在其上游分支中完全合并,或者如果没有使用--track或--set-upstream设置上游,则必须在HEAD中合并。
$ git branch -d skin
warning: deleting branch 'skin' that has been merged to
'refs/remotes/origin/skin', but not yet merged to HEAD.
Deleted branch skin (was 1f97b5b).
$ git remote -v
origin git@github.com:me/Banana.git (fetch)
origin git@github.com:me/Banana.git (push)
upstream git@github.com:others/Banana.git (fetch)
upstream git@github.com:others/Banana.git (push)
skin 分支实际上已被删除(本地),但我试图了解警告消息的含义。请注意, skin 分支仍可在 origin 和上游中使用,如预期的那样。
答案 0 :(得分:0)
警告意味着它所说的内容:您要求git删除的分支名称不是HEAD
的祖先。无论你在哪个分支(例如,master
),skin
都命名了一个不是“分支”的提交。但是,名称skin
是跟踪分支名称,它命名为“原始跟踪分支”的“提交”,因此git删除了分支标签。
用于指向提交1f97b5b
的分支标签。 origin/skin
也可能指向(或指向)1f97b5b
,即提交树看起来像这样:
A --- B --- C <-- HEAD, master, origin/master
\
D --- E <-- skin, origin/skin
其中提交E的SHA-1为1f97b5b
。但skin
可能是origin/skin
之后的提交或更多,因此1f97b5b
是提交D,或B,甚至是A的ID。重要的是从{开始{1}}可以在提交树中向后工作并找到提交origin/skin
,因此git认为删除指向提交1f97b5b
的标签是“安全的”。