gitrebase是一个相对来说独立一点的概念,我曾经纠结过是把gitrebase放在日志这一节呢,还是单独开一节? 后来我想了一下,rebase是给那些有强迫症的同学用的,如果不用也不影响,所以我们就还是新开一节吧。 rebase可以简单理解成让我们的提交日志更漂亮(前情回顾gitlog相关链接:Git紧急自救简易指南(二)版本的游历)gitrebase使用场景之一:合并本地的提交日志 还是用我们之前gitlog的例子:我们往日志里添加1111,2222,3333,4444,5555 现在我们要推送到线上仓库,实际上别人并不关心我们做了几次操作,他们只要一个结果,你添加了11115555到readme中。 这个时候我们可以使用 gitrebaseihash值 比如说我们要合并11115555,这里的hash就是1111前面一条hash(注意一定要是前面的一条) 在弹出的确认信息中,从第二条开始至最后一条首字母改成s s,squashusecommit,butmeldintopreviouscommit squash:使用该Commit,但会被合并到前一个Commit当中 然后再编辑下我们的日志,见证奇迹的时刻到了,我们的日志变成了这样: 完美的把日志从五条变成了一条 gitrebase使用场景之二:合并pull时候产生的merge日志 gitpullrebase 首先先了解一个概念: gitpullgitfetchgitmerge gitpullrebasegitfetchgitrebase 也就是说,我们执行gitpull的时候,实际上执行了两个操作,一个是fetch,另一个是merge,既然我们是要处理掉merge产生日志,那就不要merge动作好啦,我们在gitpull后面加上一个rebase参数,那么实际上我们执行的是fetch和rebase这两个动作,自然就不会有这样的困扰了