【发布时间】:2013-03-11 07:06:25
【问题描述】:
我真的相信对一个问题进行一次提交是一种很好的做法。我确定我在“最佳实践”之类的文章中某处读过它。
因此,我的工作流程如下:
- 对于一个新问题,我使用
git checkout -b new-issue创建一个新的本地分支。 - 提交所有更改。有时这涉及到 很多 次提交。
- 完成后,我将
squash提交和rebase提交到当前主题分支。 - 如果出现问题,我可以
git revert提交,找到错误,修复它,然后将新补丁提交到主题分支。我不会更改远程存储库的历史记录。
但今天,我很惊讶听到以下工作流程:
- 为新问题创建新分支。
- 提交所有内容。
- 使用
merge --no-ff将问题分支与主题分支合并(这样我们就可以使用revert的“合并提交”)。 - 如果出现问题,我们可以使用
git bisect查找错误。
根据第一种方法,我们将拥有一个干净的 git 历史记录,并且不知道开发期间使用的开销分支。
根据第二种方法,我们将有一个非常混乱的历史记录,其中包含许多丑陋的、不必要的合并和提交,仅针对一个问题。但是,我们可以使用git bisect 来查找错误。 (也许这更适合重构?)
您认为这两种方法的优缺点是什么?
您使用哪种方法,为什么?
在实践中,你真的使用
git bisect来查找错误吗? (我没有……)
【问题讨论】:
-
您可以使用
git log的--first-parent选项来隐藏合并分支上的单个提交。一点也不乱。
标签: git merge commit rebase bisect