为了分支提交历史更加清晰准确,可以在推送前对本地提交历史进行优化。
原则: 确保每次推送的内容都经过了谨慎的检查。所有的commit修改都应该在本地未推送时执行。
前期准备:命令行与vscode结合,设置vscode为git默认编辑器替换命令行编辑器,并安装GitLens扩展。
git config --global core.editor "code --wait"
修改上一次提交
- 修改上一次提交信息,避免“忘记备注”,“错别字修改”这种提交。
git commit --amend
(修改前的提交)
(在编辑器中修改提交信息,保存并关闭)
(查看新的提交历史,已经修改成功)
2. 修改上次提交内容,先暂存修改内容,再执行amend。如果不需要修改提交信息添加
--no-edit
git commit --amend --no-edit
交互式变基,修改更早的历史提交记录。
指定想修改的历史提交的个数,例如想修改最近三条的提交历史
git rebase -i HEAD~3
这条指令表示执行交互式变基,HEAD指当前分支,~3指最后3条提交,执行后会打开编辑器,显示可修改的提交历史。
- 可选操作有:pick(保留) reword(修改信息) edit(修改内容) squash(合并至上次提交,可修改信息) fixed(合并内内至上次提交并丢弃提交信息) drop(删除)
确定对每个提交修改的类型后,点击“SATART REBASE”,git会对每个提交按照时间先后顺序(最早的先进行)进行处理,每次处理一个,reword需要重新编辑提交信息,edit需要暂存新的修改内容,指导处理完成完成变基础。再次注意,一定保证提交未推送。
-
也可以按住左侧的拖拽顺序进行重新排序,重新排序可能会导致冲突,需要解决
-
将一个提交拆分为多个提交 首先重制当前提交的更改
git reset HEAD^
再按需多次提交。
退出变基
变基过程中,任何时候觉得当前操作有问题,想要退出,执行退出操作,提交状态就会回到变基开始前
git rebase --abort