使用 git squash 保持干净的主分支,及相应的调试方法
1. 通过 git squash 合并分支
有的项目要求一个 commit 必须包含完整的功能,但在开发时通常会提交很多细粒度的 commit,比如 add test
clean code
等。这种情况下可以使用 git squash
将多个 commit 压缩,得到干净的主分支。
1 | git merge --squash tmp |
2. 调试被 squash 后的代码
squash 的优点是可以得到简洁的 commit 记录,但缺失详细的 commit 记录会对后面 debug 造成一些影响。
比如,使用FastDDS后,我一直在调试一个无法重连的bug,通过 log 可以定位到这个 bug 是在一次 2000 行的 commit 引入的。如果现在开始读这两千行代码肯定会浪费很多时间。
现在要借助 github,在 pull request 页面可以找到详细的 23 个 commit 记录,并定位到引入 bug 的 commit:
为了防止这个 commit 不完整,我们需要手动下载引入 bug 的代码,和引入 bug 之前的代码,分别做一次回归测试。(手动下载代码的原因是,这些 commit ID 不在 git repo 里,无法 checkout)
在 master 里改完 bug 以后,为了防止引入新 bug,别忘了跑回归测试。