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 を指すために使用されるブランチ ラベル1f97b5borigin/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 です。重要なことはorigin/skin、コミット ツリーに沿って逆方向に作業し、 commit を見つけることができること1f97b5bです。 commit を指すラベルを削除しても「安全」であること1f97b5b

于 2013-07-28T03:44:34.053 に答える