有的时候咱们在代码提交时会提交不少次commit,每次只改一点点,代码review起来和合并master都有必定的成本。 因此合并以前最后将本身分支的多个commit合并,这样便于codereview。git
经过git log查看日志日志
经过rebase -i合并日志code
咱们须要将 2dfbc7e8 和 c4e858b5 合并成一个 commit,那么咱们输入以下命令 blog
其中,-i 的参数指的是不须要合并的 commit 的 hash 值,这里指的是第一条 commit不须要合并, 接着咱们就进入到 vi 的编辑模式hash
能够看到其中分为两个部分:it
指令部分中由前方的命令名称、commit hash 和 commit message 组成。ast
当前咱们只要知道 pick 和 squash 这两个命令便可。im
咱们将 c4e858b5 这个 commit 前方的命令改为 squash 或 s(能够从上向下,除了第一个是p外其余都改为s),而后输入:wq以保存并退出img
这是咱们会看到 commit message 的编辑界面,这个界面能够设定一个新都commit message信息。注释
其中, 非注释部分就是两次的 commit message, 你要作的就是将这两个修改为新的 commit message。
输入wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。
rebase操做以后,能够执行git push origin [分支] -f ,进行强制提交。
注意事项:
若是这个过程当中有操做错误,可使用 git rebase --abort来撤销修改,回到没有开始操做合并以前的状态。
当咱们想撤销rebase命令,能够这样:
git rebase --abort