2012-09-19 76 views
15

我需要合併兩個分支 - secondfirst然後擺脫second。下面是我所做的:爲什麼git不允許我安全地刪除分支?

  • git clone d項目得到一個新的副本
  • git checkout --track origin/second,做了一些修改,並承諾
  • git checkout --track origin/first,做了一些修改,並承諾
  • git merge second(GIT說「合併由遞歸製造「)
  • git branch -d second

然後git說:

$ git branch -d second 
warning: not deleting branch 'second' that is not yet merged to 
     'refs/remotes/origin/second', even though it is merged to HEAD. 
error: The branch 'second' is not fully merged. 
If you are sure you want to delete it, run 'git branch -D second'. 

爲什麼會發生這種情況?合併之前我從來沒有收到過這條消息。合併工作得很好,沒有衝突。我如何安全地刪除second分支?

+0

'git checkout second'跟着'git push origin second'讓git停止抱怨,但我不明白爲什麼。 –

+1

一個瘋狂的猜測,但也許git抱怨說,在刪除它之前你沒有將'second'推到原點?還要確保你不在»分離頭«狀態 – knittl

+0

@ knittl是的,你似乎是正確的,但爲什麼會關心我是否推「第二」? –

回答

32

根據我的實驗以及@ knittl和@ twalberg的評論,似乎git只是想讓我在刪除它之前將更改推送到second分支。

我所做的:

$ git checkout second 
$ git push origin second 
$ git checkout first 
$ git branch -d second 

其中沒有出現警告的工作。

+0

不會'git分支-D second'解決它還是一個危險的做法? – Bart

+0

@它取決於你的意思是「解決它」。這樣做與我的解決方案不會有相同的結果 - 「原點」遙控器的狀態會有所不同。 –

+0

@只有當你知道你在做什麼時才應該使用它。 Git主要提供有用的警告,所以最好不要強迫它。 – cst1992

相關問題