我真的相信在一个问题上进行一次提交是一种很好的做法。我确定我在“最佳实践”之类的文章中某处读过它。
因此,我的工作流程如下:
- 对于一个新问题,我使用
git checkout -b new-issue
. - 将所有更改提交给它。有时这涉及大量提交。
- 完成后,我
squash
将提交并将rebase
它们放入当前的主题分支。 - 如果出现问题,我可以
git revert
提交,找到错误,修复它,然后将新补丁提交到主题分支。我不会更改远程存储库的历史记录。
但是今天,我很惊讶地听到以下工作流程:
- 为新问题创建新分支。
- 将一切都投入其中。
- 用于
merge --no-ff
将问题分支与主题分支合并(因此我们将拥有我们可以的“合并提交”revert
)。 - 如果出现问题,我们可以使用它
git bisect
来查找错误。
根据第一种方法,我们将拥有一个干净的 git 历史记录,并且不知道开发期间使用的开销分支。
根据第二种方法,我们将有一个非常混乱的历史,只有一个问题有很多丑陋的、不必要的合并和提交。但是,我们可以使用它git bisect
来查找错误。(也许这更适合重构?)
您认为这两种方法的优缺点是什么?
您使用哪种方法,为什么?
在实践中,你真的习惯于
git bisect
寻找错误吗?(我没有……)