git 的commit和push是频繁与谨慎的统一
所谓频繁,是指对于git commit的频率定义应该是,在保证每次commit有意义的基础上“最大限度”的频繁。
所谓谨慎,是指在push之前压缩那些临时的或者无意义的commit,这要靠git 的rebase实现。
使用rebase实现commit压缩
rebase(变基)主要用来整合来自不同分支的修改,与merge要达到的目的一样。
它的原理是首先找到两个分支 的最近共同祖先 ,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底 , 最后以此将之前另存为临时文件的修改依序应用。
如果我们将rebase应用在同一分支的之前的某次commit,结果会怎么样?
通过以上原理我们可以看出,是的,在一个分支上用没有任何变化,没任何用。。。
也不尽然,我们使用交互模式执行rebase,通过简单修改就可以实现commit的“合并”。
例子
比如,本地修改时做了若干次提交,很乱,如下,总共五次提交
$ git log --pretty=format:"hash: %h commit message: %s"