我真的相信,在一個問題上做出一個承諾是一個很好的做法。我確信我在「最佳實踐」這樣的文章中的某個地方閱讀過它。git commit的做法更好嗎?
因此,我的工作流程一直是以下幾點:
- 對於一個新的問題,我創建
git checkout -b new-issue
新的本地分支。 - 將所有更改提交給它。有時這涉及提交的批次。
- 完成後,我將
squash
的提交和rebase
它們轉換爲當前的專題分支。 - 如果出現問題,我可以
git revert
提交,找到bug,修復它,然後在專題分支中提交新補丁。我不會更改遠程存儲庫的歷史記錄。今天
不過,我很驚訝地聽到下面的工作流程:
- 新問題,創建新的分支。
- 承諾一切。
- 使用
merge --no-ff
合併問題分支與專題分支(所以我們將有「合併承諾」,我們可以revert
)。 - 如果出現問題,我們可以使用
git bisect
來查找錯誤。
如第一的方針,我們將有一個乾淨的git的歷史,並沒有關於開發過程中使用開銷分支機構的想法。
根據第二種方法,我們將有一個非常混亂的歷史,有很多醜陋的,不必要的合併和提交只是一個問題。但是,我們可以使用git bisect
來查找錯誤。 (也許這是重構更好?)
你看到這兩種方法有什麼利弊?
您使用哪種方法,爲什麼?
實際上,您是否真的使用過
git bisect
來查找錯誤? (我沒有...)
您可以使用'git log'的' - first-parent'選項隱藏合併分支上的單個提交。一點都不麻煩。 – Zaz 2014-07-09 15:58:39