Git:「小步快跑」的开发模式
在Git中每次Commit都可以被算作是一个版本,我们经常按照功能和模块来划分Commit,但并不是所有的功能都会对应到Commit中。因为根据所开发功能的不同,所花费的时间也会有很大区别,比如一些小的模块例如页面调整,账号注册,密码找回这些功能都能在短期内搞定,但还有一些功能相对划分较大,或者需要等待上下游多方合作的功能,都需要我们再次切分成若干小的子功能来完成。这个完成切分和实现的过程最适合利用「小步快跑」的开发模式。
「小步快跑」是比较通俗的说法,其意思就是通过把大的功能点切分成若干小的子功能,在一定时间范围内只针对某个子功能进行集中开发,也可以理解为各个击破的意思。这种开发模式的好处自然不言而喻,帮助我们把问题降低维度,由繁变简,不过随着开发工作的继续,问题也会显现出来,就是太多小的Commit导致Git历史过于琐碎,没法梳理出有用信息。
利用Git技巧进行「小步快跑」
无痛重置
无痛重置,是采用「小步快跑」后带来的第一个好处,因为是小步快跑所以改动的内容也不会很多,重新开始的代价基本为零,相反如果两个版本之间划分跨度较大,这时重头再来的代价就会变很高,让你望而却步。
删除未被追踪的文件和文件夹
git clean -fd
reset 删除Commit
git reset —hard HEAD
git reset —hard HEAD^
git reset —soft HEAD^
上面第一条不带脱字符(^)的reset命令是将存在于stage的改动删除,第二条命令用来回到上一个版本,并删除当前版本。最后一条也是回到上一次Commit的状态,不过不会像使用hard
参数那样删掉当前版本,而是将Commit重新放回到了stage中。个人认为,对于小步快跑而言soft的意义不大,因为已经是小步提交了,所以出现的场景应该是要么删要么留,不会有需要修改Commit提交本身的需求。
合并Commit
小步给我们带来便捷的同时,也带来了一堆琐碎的Commit,如果任由这些Commit进入到最后的History,那么最后将会导致无法凸显出有用的Commit信息来。正确的做法是,在本地进行小步快跑,并只在本地合并小版本的Commit后再推到到远程服务器。合并Commit,会涉及到修改Git的历史,我们需要用到git rebase -i
这个命令,关于这个命令的使用我在之前的一篇文章中有说过,大家可以参考Git: 重写提交历史 。
OK,到这儿就说完了。「小步快跑」其实是一个很普通但又很实用的Git技巧,相信采用这种模式后一定能让你的开发过程如鱼得水。最后建议大家把上面的命令根据自己的记忆偏好通过别名(alias)写到.gitconfig
中,能让你少码不少字。:)
-完-
你还可以看: