Git安全回退历史版本

Git安全回退历史版本

方法 特点
git revert 保留所有中间提交历史,生成显式的反向提交,适合精确撤销特定提交。
直接提交 快速生成一个回退提交,无需处理多个撤销操作,适合简单回退到某个旧版本。

git revert

仅回退一个版本

bash 复制代码
git revert HEAD

回退多个版本

bash 复制代码
git revert D C B  # 先撤销最近的提交 D,再依次撤销 C、B
bash 复制代码
git revert --no-commit B..D  # 撤销提交 B 到 D 之间的所有提交(不含 B)
git commit -m "Revert commits from B to D"

查看是否完成回退操作

base 复制代码
git status

完成:

复制代码
On branch master
nothing to commit, working tree clean

未完成:

复制代码
On branch master
You are currently reverting commit b358355.
  (all conflicts fixed: run "git revert --continue")
  (use "git revert --skip" to skip this patch)
  (use "git revert --abort" to cancel the revert operation)

其余操作

  • git revert --continue
作用:

继续完成当前的 revert 操作。

使用场景:
  • revert 过程中遇到冲突时,Git 会暂停操作并提示你解决冲突。
  • 解决冲突后,使用 git add <文件> 标记冲突文件为已解决。
  • 然后运行 git revert --continue,Git 会生成一个新的反向提交,完成 revert 操作。
示例:
bash 复制代码
# 解决冲突后
git add <冲突文件>
git revert --continue

  • git revert --skip
作用:

跳过当前的 revert 操作(跳过当前提交)。

使用场景:
  • revert 过程中遇到冲突,但你不想解决冲突,而是希望跳过当前提交的撤销操作。
  • 跳过当前提交后,Git 会继续处理后续的 revert 操作(如果有)。
示例:
bash 复制代码
# 跳过当前提交
git revert --skip

  • git revert --abort
作用:

完全放弃当前的 revert 操作,恢复到执行 revert 之前的状态。

使用场景:
  • revert 过程中遇到问题(如冲突无法解决),或者你不想继续 revert 操作时。
  • 运行 git revert --abort 后,所有未完成的 revert 操作都会被取消,工作目录和暂存区会恢复到执行 revert 之前的状态。
示例:
bash 复制代码
# 放弃当前的 revert 操作
git revert --abort

直接提交

checkout方式

bash 复制代码
git checkout <目标版本哈希> -- .
git commit -m "回退到目标版本 <目标版本哈希>"

git read-tree方式

bash 复制代码
git read-tree -u --reset <目标版本哈希>
git commit -m "回退到目标版本 <目标版本哈希>"
相关推荐
小贾要学习41 分钟前
如何在Linux操作系统环境下使用git命令提交文件到远程仓库
linux·运维·git
J2虾虾42 分钟前
WebStorm的项目绑定Git并上传到gitee
git·gitee·webstorm
虾说羊1 小时前
git分支管理介绍和stash命令
git
71-33 小时前
git 和 tortoisegit的快速使用教学(上传至gitee或GitHub)
git·gitee
唐青枫8 小时前
为什么 .gitignore 不生效?其实你忘了用 git rm --cached!
git
代码or搬砖1 天前
Git学习笔记(三)
笔记·git·学习
虾说羊1 天前
git连接远程仓库并拉去推送以及克隆命令
git
IT~狂男1 天前
GIT 实战命令操作大全,代码变动,推动,修改备注,撤销(篇幅一)
git
前端拿破轮1 天前
从0到1搭一个monorepo项目(一)
前端·javascript·git
消失的旧时光-19431 天前
git的 Rebase
git