文章总结: 文档详解Git代码回滚场景与操作。针对合并引入Bug或误操作,区分了本地与远程回滚策略。本地可使用gitreset移动指针或gitrevert创建撤销提交。远程回滚推荐使用gitrevert保留历史,或通过gitreset加forcepush强制覆盖历史。文章提供了具体命令示例,强调在团队协作中应谨慎使用强制推送,优先选择不改变历史的回滚方式以保障代码库稳定。 综合评分: 82 文章分类: 安全开发,实战经验
git 代码回滚详解
原创
静观云起 静观云起
码云精炼
2026年3月7日 10:38 广东
在日常的软件开发过程中,团队成员通常会使用Git作为版本控制工具,来管理代码的变更、协作开发以及维护项目的稳定版本。
一 常见开发场景
✅多分支开发场景:
为了并行开发不同特性功能或修复不同bug,团队往往会从主干分支master,创建多个功能分支,如 feature-A、feature-B,进行并行开发。
✅多分支合并场景:
当特性功能或修复bug开发完成后,开发者会将对应的分支feature-A、feature-B,合并到目标分支sit-test中,以集成代码、进行集成测试。
✅合并冲突场景:
在合并过程中,如果两个分支对同一部分代码做了不同的修改,就会发生冲突(conflict),需要手动在线或本地解决冲突后才能完成合并。
二 需要回滚的场景
✅合并后出现问题
- 合并分支(如将 feature-A合并到sit-test)后,发现新代码引入了Bug或功能异常。
- 合并后代码到sit-test后,无法正常编译、运行,或影响了系统的稳定性。
*✅解决冲突后结果不如预期*
- 在解决合并冲突时,可能选择了错误的代码版本,或者合并后的逻辑不符合预期。
- 解决冲突后没有充分测试,导致线上或测试环境出现问题。
*✅误合并或合并了错误的分支*
- 可能误将某个不应该合并的分支如feature-C合并到了目标分支sit-test。
- 或者合并的时机不对,比如尚未完成的功能被提前合并到集成测试分支sit-test。
*✅影响团队协作*
- 合并后的代码推送到了远程仓库(如GitHub),可能影响其他团队成员拉取代码、继续开发或部署。
- 为了保证团队后续工作基于正确的代码状态,需要将分支回滚到稳定或预期的版本
三 本地提交的回归
在本地分支提交,未推送到远程分支,有2种方式回滚
方式一 git reset
回滚到指定版本,将当前分支的HEAD指针移动到指定的提交,并且可以选择是否保留工作目录和暂存区的更改。
✅ 回滚到指定提交并保留更改
回滚到某个提交,但保留工作目录和暂存区的更改,可以使用--soft
git reset --soft <commit-hash>
说明:<commit-hash>是你想要回滚到的提交的哈希值。执行该命令后,HEAD指针会移动到指定的提交,但工作目录和暂存区的文件不会发生变化。
✅回滚到指定提交并丢弃更改
回滚到某个提交,并且丢弃工作目录和暂存区的更改,可以使用--hard
git reset --hard <commit-hash>
说明:执行该命令后,HEAD指针会移动到指定的提交,并且工作目录和暂存区的文件都会被重置到该提交的状态。
✅ 回滚到指定提交并保留工作目录的更改
回滚到某个提交,但保留工作目录的更改,可以使用--mixed
git reset --mixed <commit-hash>
说明:该命令后,HEAD指针会移动到指定的提交,工作目录的文件会保留,但暂存区的更改会被丢弃
`方式二 git revert
git revert是另一种常用的回滚方式。与git reset不同,git revert不会移动HEAD指针,而是创建一个新的提交来撤销某次提交的更改。这种方式更适合在公共分支上使用,因为它不会改变提交历史。
✅ 撤销某次提交
要撤销某次提交,可以使用以下命令`
git revert <commit-hash>说明:这里的
<commit-hash>是你想要撤销的提交的哈希值。执行该命令后,Git会创建一个新的提交,该提交会撤销指定提交的更改。
✅ 撤销连续的多次提交
如果你需要撤销连续的多次提交,可以使用以下命令
git revert <oldest-commit-hash>^..<latest-commit-hash>
说明:该命令会撤销从<oldest-commit-hash>到<latest-commit-hash>之间的所有提交
四 远程仓库推送回滚
本地分支代码已推送到远程分支,有2种方式回滚
方式一 git reset
彻底删除远程仓库中的某些提交,可以使用git reset来回滚本地提交,然后使用git push –force强制推送到远程仓库。注意:该操作会修改提交历史history,可能会影响其他开发者的代码,请谨慎使用.。
首先,使用git log找到你想要回滚到的提交的哈希值
<1> 回滚本地分支
然后执行以下命令
git reset --hard <commit-hash>
说明:该命令会将HEAD指针移动到指定的提交,并丢弃之后的提交。
<2> 强制推送到远程分支
接下来,使用以下命令将回滚后的提交强制推送到远程分支
git push --force origin <branch-name>
说明:执行该命令后,远程分支的提交历史将被修改,回滚之后的提交将被删除
方式二 git revert
首先,使用git log找到你想要撤销的提交的哈希值
<1> 回滚本地分支
然后执行以下命令
git revert <commit-hash>
说明:执行该命令后,Git会创建一个新的提交来撤销指定提交的更改
<2> 推送到远程分支
将新的提交推送到远程仓库
git push origin <branch-name>
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:码云精炼 静观云起 静观云起《git 代码回滚详解》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论