我今天在幫一個同事,發現git branch -D
和git branch -d
做了些微不同的事情。從git的幫助文檔:「git branch -d」的用例是什麼
-d --delete delete fully merged branch
-D delete branch (even if not merged)
我可以欣賞避免刪除任意分支,但如何混帳確定何時branch -d
是允許的?什麼時候會有人正確使用branch -d
?
我今天在幫一個同事,發現git branch -D
和git branch -d
做了些微不同的事情。從git的幫助文檔:「git branch -d」的用例是什麼
-d --delete delete fully merged branch
-D delete branch (even if not merged)
我可以欣賞避免刪除任意分支,但如何混帳確定何時branch -d
是允許的?什麼時候會有人正確使用branch -d
?
將-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
沒有和它使確定要刪除它然後將這些更改拉入當前分支。
什麼時候有人會正確使用分支-d?
這是在拉取請求合併到主分支後完成的。從哪個分支中取出pull請求可以在合併之後被刪除(假設分支僅用於特定項目並且項目已完成)。
當某個分支完全合併時(即將該分支的所有修訂版本推送到相應的 遠程或分支合併到master
),-d
就足夠了。來自文檔:
刪除分支。分支必須在其上游分支中完全合併,否則如果沒有使用--track或--set-upstream設置上游,則分支在HEAD中。
如果你做了一個merge --squash
(即不是這個部門的所有版本都包含在master
),或者你,因爲你認識到你做錯了,想扔這個分支遠沒有在任何地方合併分支,需要-D
:
刪除分支,而不考慮其合併狀態。
我喜歡'強制分支刪除'這個詞。 +1。 – eckes
獅子座可以當老師。 – Stephane