Skip to content

修改提交 & 撤回提交

Updated: at 02:32 PM

修改提交

# 注意:此修改方式会改变你修改的 commit 以及后边所有 commit 的时间

# 如果要修改的是最近一次,就使用如下命令
git commit --amend

# 如果要修改的是之前的,可以使用如下命令,此处的7是倒数第7个提交。如果是1,那么就是最新的提交。
git rebase -i HEAD~7

# 如果已经数不清是哪一条了,也可以直接用 commitId 来修改,命令如下
git rebase -i commitId
# eg: git rebase -i 9f25c6

# 执行上方任意一条命令后,会进入一个 vim 窗口,此时如果最上边那一条就是你刚刚 rebase 的那一条
# 将最上边这一条前边的 pick 改成 reword
# 然后保存,也就是 vim 的 :x 或者 :wq
# 此时会自动打开一个 vim 窗口,最上边一行就是你要修改的消息,直接按 i ,进入 vim 的编辑模式开始修改就可以了。
# 修改完成后继续保存,仍然是 vim 的 :x 或者 :wq
# 最后就是 git push -f, 必须 -f,不然是有冲突推不上去的,大胆 -f,不影响其他的提交。

# 如果你保存的时候报错了,报错中有 vi 啥啥啥编辑器关闭文件啥啥啥,直接执行下边的命令,换成 vim 就好了。
git config --global core.editor /usr/bin/vim
git config --global core.editor 'code --wait' # 必须在引号内,不要手贱删掉引号,尤其是 windows
# 上方 code 前提是你 vscode 在环境变量中,可以直接使用 code 访问,且命令行 code --version 能正确输出版本。

# 也有人使用其他编辑器,由于博主是 mac,vim 是自带的,所以直接 vim 了,windows 使用这个命令无法解决报错。

撤回提交

# 撤回并保留代码
git reset --soft HEAD^

# 撤回不保留代码
git reset --hard HEAD^

# 撤回多个提交,2为两次
git reset --soft HEAD~2

# 执行完命令以后就可以当作没提交一样,不过下次 push 时候要 -f。