2013-07-28 94 views
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 [email protected]:me/Banana.git (fetch) 
origin [email protected]:me/Banana.git (push) 
upstream [email protected]:others/Banana.git (fetch) 
upstream [email protected]:others/Banana.git (push) 

皮膚分支實際上是刪除(本地),但我試圖瞭解警告消息意味着。注意皮膚分支仍然可用原產地上游,如預期。

+0

也許你還沒有把它合併到當前的分支,本地? – Ryan

+0

我剛剛從原點檢查出'skin'分支進行預覽。我不是故意在本地工作。之後,我想我們刪除它,而不是坐在那裏什麼都不做;因此,我遇到了這個警告。 – moey

+0

所以它沒有合併,這很好。這只是一個警告,如果不適用,您可以放心地忽略它。 – Ryan

回答

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。重要的是,從origin/skin開始,可以沿着提交樹倒退並找到提交1f97b5b,因此git認爲刪除指向提交1f97b5b的標籤是「安全的」。

+0

我假設「跟蹤分支」是指具有遠程分支的術語,即不是純粹的本地分支? – moey

+1

如果'git config branch.L.remote'被設置爲一個遠程名稱(比如origin)並且'git config branch.L.merge'具有,則本地分支L正在跟蹤遠程分支R(名稱不需要匹配)一個ref名字。另見http://stackoverflow.com/questions/520650/how-do-you-make-an-existing-git-branch-track-a-remote-branch – torek

+0

我不知道L和R不需要具有相同的名稱。並且,感謝(+1)鏈接。 – moey