Skip to content
2026-09-29 04:20448 字Git版本控制回滚

反悔操作 ​

GitFAQ-那些可以反悔的神操作_哔哩哔哩_bilibili

1 撤销 本地尚未提交的更改 ​

powershell
Common Lisp git checkout   # 问题:包含多个不相关的功能

2 撤销 提交到缓存中的文件 ​

powershell
git reset HEAD # 删除全部
git reset <file>

3 撤销 最近一次的本地 commit ​

powershell
git reset HEAD^ # 不会修改文件 
git reset --hard HEAD^

4 撤销 第一个本地提交 ​

powershell
git update-ref -d HEAD 
git rm --cached -r .

5 撤销 本地分支上中间的某个提交 ​

powershell
git rebase -i <base-branch>
# 选择那些记录需要保留
pick fds789 redme 0
d fsd798 readme 1   # 要丢弃的记录将 pick 改为 d
pick fdhi3 readme 2
# 解决冲突
vim README.md
git rebase --continu

6 撤销 一个本地 git rm 的文件 ​

powershell
git reset HEAD <file>
git checkout <file>

7 撤销 一个本地 git mv ​

powershell
git mv <f2> <f1>

8 修改 最新的 commit ​

powershell
git commit --amend

9 撤销 本地的 merge ​

powershell
git reset --hard HEAD^

10 撤销 本地的 rebase ​

powershell
git reset --hard ORIG_HEAD

11 撤销 发生冲突的 merge 和 rebase ​

powershell
git merge --abort 
git rebase --abort

12 撤销 刚执行的 git pull ​

powershell
git reflog                    # 查看本地的所有操作记录
git reset --hard HEAD@{1}     # @{} 是要撤销的记录

13 撤销 最新的一次 push ​

powershell
git reset --hard HEAD^
git push --force   # 会覆盖服务器上的commit,可能会受限

14 撤销 一个 push 到远端的 branch / tag ​

powershell
git push origin -d <branch/tag>

本地和远程仓库都回退到同一个版本 ​

powershell
git branch  # 查看当前分支
git reset --hard HEAD^  # HEAD^ --版本号
git push --force-with-lease origin <branch-name>  # <branch-name> 要推送的分支

每一篇文章,都是时间的标本