能够写出漂亮代码的程序员就是有品味的程序员么?
还不够。品味来自于每一个细节,有品位的程序员会把每一次提交做小、做好、做对,尽量做到整个开发的过程的无可挑剔,这样才够逼格,才可以称为有品位。
熟练使用 Git,会让程序员更有品味。
写小提交就是将问题解耦:“Do one thing and do it well”。开源软件的提交通常都很小,每个提交只修改一个到几个文件,每次只修改几行到几十行。 在你的仓库里执行下面的命令,可以很容易地统计出来每个提交的修改量。
$ git log --no-merges --pretty="" --shortstat
可是在开发过程中,程序员一旦进入状态,往往才思如泉涌,写出一个大提交。比如我又一次向 Git 贡献代码时, 提交还不算太大,就被 Git 的维护者 Junio 吐槽,要我拆分提交,便于评审:
TODO
那么如何将提交拆分为若干个小提交呢?
先以拆分最新的提交为例,可以如下操作:
重置到上一次提交。
$ git reset HEAD^
通过补丁块拣选方式选择要提交的修改。
$ git add -p
修补提交。
$ git commit --amend
添加剩余的代码修改,并提交。
$ git add -u
$ git commit
如果遇到复杂情况,难以通过补丁块拣选(git add -p)的方式修改提交,也可以直接编辑文件,删除不希望此次提交的修改,再执行:
$ git commit --amend
然后执行下面的命令,还原原始的文件修改,并提交。如下:
$ git checkout HEAD@{1} -- .
$ git commit
如果要拆分的是历史提交(如 commit1)而非当前提交,则可以执行交互式变基(git rebase -i),
在需要拆分的提交停下来,执行上面类似的拆分提交操作。然后再执行 git rebase --continue
完成
变基操作。