本文简要介绍如何使用 git rebase 命令实现变基操作
压缩提交历史
有时候如果发现已提交的内容中有些许拼写错误(typo)等,我们需要修改后再提交这个修改。这样在日志 的提交记录中,我们就会看到2个提交记录。实际上我们不喜欢在历史记录中看到第二个这类的提交记录。故,我们可以将如下示例,第二个修改包含到前一个提交中,压缩成一个提交记录
先建立2次提交
git commit -am 'add new file' # 暂记commitId1
git commit -am 'fix typo' # 暂记commitId2,不想在历史记录中看到这次提交
压缩提交历史
使用 git rebase 命令,选定包含HEAD(当前分支最新提交)在内的2次最新提交为对象,在编辑器中打开
git rebase -i HEAD~2 # 选定包含HEAD(当前分支最新提交)在内的2次最新提交为对象
打开编辑器,将看到如下内容
pick commitId1 add new file
pick commitId2 fix typo
...
欲保留的某个提交记录,其前的pick保持不变;
对于希望被合并的提交记录,将其前面的 pick 改写为 fixup;
修改完毕,保存完毕并退出后,即可看到rebase成功的提示信息
检查压缩结果
现在再查看提交历史时,将看不到 fix typo 这个修改提交的记录,同时 add new file 这个提交的commit id也已被更新,不再是之前的commitId1,这说明之前的提交记录压缩成功,同时生成一个新的commit id。以保持提交记录历史的干净
其他选项
fixup: 保留该commit修改,但不保留commit message drop: 撤销删除该commit的修改