警告消息:已删除分支外观(为..)



来自git branch:的手册页

删除分支。分支必须在其上游分支中完全合并,如果没有使用--track或--set设置上游,则必须在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)

皮肤分支实际上被删除了(本地),但我试图理解警告消息的含义。请注意,正如预期的那样,皮肤分支在起源上游仍然可用。

警告的意思正是:您要求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是CCD_ 9。但skin可能是origin/skin之后的一个或多个提交,因此1f97b5b是提交D、B甚至a的ID。重要的是,从origin/skin开始,可以沿着提交树向后工作并找到提交1f97b5b,因此git认为删除指向提交1f97b5b的标签是"安全的"。

最新更新