1

从手册页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)

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

4

1 回答 1

0

警告的意思就是它所说的:您要求 git 删除的分支名称不是HEAD. 无论您在哪个分支(例如,master),skin命名一个不属于该分支“一部分”的提交。但是,该名称skin是一个跟踪分支名称,它命名了一个提交,它是源跟踪分支的“一部分”,因此 git 删除了分支标签。

用于指向 commit 的分支标签1f97b5b。很可能origin/skin 指向(或指向)1f97b5b,即提交树看起来像这样:

A --- B --- C       <-- HEAD, master, origin/master
        \
          D --- E   <-- skin, origin/skin

提交 E 的 SHA-1 是1f97b5b. 但它可能skin是一个 commit 或更晚origin/skin,所以这1f97b5b是 commit D 或 B 甚至 A 的 ID。重要的是,从origin/skin它开始可以沿着 commit 树向后工作并找到 commit 1f97b5b,因此 git 数字删除指向 commit 的标签是“安全的” 1f97b5b

于 2013-07-28T03:44:34.053 回答