2014-12-22 104 views
3

我今天在幫一個同事,發現git branch -Dgit branch -d做了些微不同的事情。從git的幫助文檔:「git branch -d」的用例是什麼

-d --delete delete fully merged branch 
-D   delete branch (even if not merged) 

我可以欣賞避免刪除任意分支,但如何混帳確定何時branch -d是允許的?什麼時候會有人正確使用branch -d

回答

12

-D想象成強制分支刪除。它將刪除分支,即使它尚未合併到您當前所在的分支中。

-d但是,會警告您並且不會刪除該分支直到其合併。

例如

你分支master分支到分支A。作出承諾A。如果再次切換到master分支,並試圖git branch -d A你會得到像這樣

git branch -d A 
error: The branch 'A' is not fully merged. 
If you are sure you want to delete it, run 'git branch -D A'. 

的消息。這是因爲你在A分支提交的是master沒有和它使確定要刪除它然後將這些更改拉入當前分支。

+0

我喜歡'強制分支刪除'這個詞。 +1。 – eckes

+0

獅子座可以當老師。 – Stephane

1

什麼時候有人會正確使用分支-d?

這是在拉取請求合併到主分支後完成的。從哪個分支中取出pull請求可以在合併之後被刪除(假設分支僅用於特定項目並且項目已完成)。

2

當某個分支完全合併時(即將該分支的所有修訂版本推送到相應的 遠程或分支合併到master),-d就足夠了。來自文檔:

刪除分支。分支必須在其上游分支中完全合併,否則如果沒有使用--track或--set-upstream設置上游,則分支在HEAD中。

如果你做了一個merge --squash(即不是這個部門的所有版本都包含在master),或者你,因爲你認識到你做錯了,想扔這個分支遠沒有在任何地方合併分支,需要-D

刪除分支,而不考慮其合併狀態。

相關問題