git修改提交历史

155 阅读2分钟

为了分支提交历史更加清晰准确,可以在推送前对本地提交历史进行优化。

原则确保每次推送的内容都经过了谨慎的检查所有的commit修改都应该在本地未推送时执行。

前期准备:命令行与vscode结合,设置vscode为git默认编辑器替换命令行编辑器,并安装GitLens扩展。

image.png

git config --global core.editor "code --wait"

修改上一次提交

  1. 修改上一次提交信息,避免“忘记备注”,“错别字修改”这种提交。 git commit --amend

image.png(修改前的提交)

image.png

(在编辑器中修改提交信息,保存并关闭)

image.png (查看新的提交历史,已经修改成功) 2. 修改上次提交内容,先暂存修改内容,再执行amend。如果不需要修改提交信息添加--no-edit

git commit --amend --no-edit

交互式变基,修改更早的历史提交记录。

指定想修改的历史提交的个数,例如想修改最近三条的提交历史

git rebase -i HEAD~3 这条指令表示执行交互式变基,HEAD指当前分支,~3指最后3条提交,执行后会打开编辑器,显示可修改的提交历史。

image.png

  1. 可选操作有:pick(保留) reword(修改信息) edit(修改内容) squash(合并至上次提交,可修改信息) fixed(合并内内至上次提交并丢弃提交信息) drop(删除)

确定对每个提交修改的类型后,点击“SATART REBASE”,git会对每个提交按照时间先后顺序(最早的先进行)进行处理,每次处理一个,reword需要重新编辑提交信息,edit需要暂存新的修改内容,指导处理完成完成变基础。再次注意,一定保证提交未推送。

  1. 也可以按住左侧的拖拽顺序进行重新排序,重新排序可能会导致冲突,需要解决

  2. 将一个提交拆分为多个提交 首先重制当前提交的更改 git reset HEAD^

再按需多次提交。

退出变基

变基过程中,任何时候觉得当前操作有问题,想要退出,执行退出操作,提交状态就会回到变基开始前
git rebase --abort