Git(五): 变基

本文简要介绍如何使用 git rebase 命令实现变基操作

figure

压缩提交历史

有时候如果发现已提交的内容中有些许拼写错误(typo)等,我们需要修改后再提交这个修改。这样在日志 的提交记录中,我们就会看到2个提交记录。实际上我们不喜欢在历史记录中看到第二个这类的提交记录。故,我们可以将如下示例,第二个修改包含到前一个提交中,压缩成一个提交记录

先建立2次提交

1
2
git commit -am 'add new file'   # 暂记commitId1
git commit -am 'fix typo' # 暂记commitId2,不想在历史记录中看到这次提交

压缩提交历史

使用 git rebase 命令,选定包含HEAD(当前分支最新提交)在内的2次最新提交为对象,在编辑器中打开

1
git rebase -i HEAD~2        # 选定包含HEAD(当前分支最新提交)在内的2次最新提交为对象

打开编辑器,将看到如下内容

1
2
3
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的修改

0%