git 能给开发者带来不少便利,这里我就讲两个场景。
revert
revert 是恢复的意思,用过 svn 的同学应该都对 svn 的 revert 操作赞不绝口:它能把未提交的修改一键丢弃。它的应用场景就是我在git版本管理的优点中提到的,我们在源码中添加一些自测代码如 printf、System.out.println来对新增加的功能进行正确性测试,测试正确了之后我们可以用 svn 的 revert操作一键丢弃这些垃圾代码。
git 也有 revert,作用也类似,但它非但没有去掉一个 commit 反而增加了一个 commit,所以我不喜欢……遇到上面这种情况的时候,我首先将原有代码 commit 提交,然后写自测代码,自测完了,再提交一个 commit(这个 commit 中都是垃圾代码),最后 reset hard 到倒数第二个 commit,这样就不会把垃圾代码暴露给别人了。
调试专家
调试专家的场景是这样的:假设你和一个队友在协同开发一个项目,你是个调试专家,Bug 见了你都怕。然后有一天你的队友发现一个棘手的 Bug,丢给了你,但是你现在手头有一个没写完的功能,既不能丢掉又不能掺到有 Bug 的代码中。
这种情况你应该预先做好准备:你可以建一个分支 working,在 working 中做随时可能被打断的活;而 master 分支就等着处理 Bug。碰到以上情况,你可以在 working 中先提交一个临时 commit(解决了 Bug 后再来修),然后切换到 master 去 Debug,解决了 Bug 后再切换回 working 淡定地继续工作(working 中的活干完了就合并到 master 中)。