git rebase
是一个非常强大的命令,目前我常用的是两个功能:
- 合并更新分支 跟
git merge
差不多,但是不会生成新的合并节点 - 操作提交记录,如:修改 commit mssage,或在提交历史中进行交互式合并之前的提交历史
下面我们就来探讨这两种操作
1. 查看提交历史
首先,查看你的提交历史,了解当前的提交情况:
git log --oneline
这将显示提交的简要历史,每个提交前面有一个简短的哈希值和提交信息。
2. 修改 commit mssage
假设你想修改最近的 commit message,可以使用以下命令开始交互式变基:
git rebase -i HEAD~1
在弹出的交互式窗口中修改内容,修改前面的pick
为 r
/reword
,保存后提交
- reword 或 r:保留这个提交,但编辑提交信息。
在下面窗口将 message 2
修改为 message 2 修改
,最后保存提交,ok
3. 合并操作历史记录
假设你想合并最近的 3 个提交记录,可以使用以下命令开始交互式变基:
git rebase -i HEAD~3
这里的 HEAD~3
表示从当前 HEAD 开始,向上数 3 个提交。-i
参数表示交互式变基。
4. 编辑提交记录
执行上述命令后,Git 会打开一个文本编辑器,列出你选择的提交记录。编辑器中的内容可能如下所示:
pick 605852a message 1
pick bee2f62 message 2 修改
pick ad61023 message 3
- pick:保留这个提交。
- squash 或 s:将这个提交合并到前一个提交中。
- reword 或 r:保留这个提交,但编辑提交信息。
- edit 或 e:保留这个提交,但在这个提交上停下来,允许你进一步修改。
- drop 或 d:删除这个提交。
假设你想将第二个和第三个提交合并到第一个提交中,可以将编辑器中的内容修改为:
pick 605852a message 1
s bee2f62 message 2 修改
s ad61023 message 3
保存并关闭编辑器,Git 会开始执行变基操作。如果一切顺利,变基操作将自动完成。
弹出合并提交信息,Git 会再次打开编辑器,让你编辑合并后的提交信息。编辑完成后,保存并关闭编辑器。
最后使用git log
查看历史
5. 解决冲突
如果在变基过程中出现冲突,Git 会暂停变基操作,并提示你解决冲突。解决冲突后,继续变基操作:
git add .
git rebase --continue
如果在某个步骤中需要放弃变基操作,可以使用:
git rebase --abort
这将恢复到变基开始前的状态。
6. 总结
- 查看提交历史:使用
git log --oneline
查看提交历史。 - 开始交互式变基:使用
git rebase -i HEAD~N
开始交互式变基,其中N
是你希望合并的提交数量。 - 编辑提交记录:在编辑器中选择
squash
或s
来合并提交。 - 合并提交:保存并关闭编辑器,Git 会自动合并提交。
- 解决冲突:如果出现冲突,解决冲突后使用
git add .
和git rebase --continue
继续变基。 - 查看结果:使用
git log --oneline
查看合并后的提交历史。