Git 回退提交流程说明
1125 字
6 分钟
Git 回退提交流程说明
Git 回退提交流程说明
本文档适用于:已经把代码提交并推送到远程仓库后,发现最新提交不想要,需要回退到之前某个稳定提交的情况。
一、先确认当前分支
进入项目目录后,先确认当前所在分支:
git branch如果需要回退的是 main 分支,先切换到 main:
git checkout main然后同步远程最新状态:
git pull origin main二、查看提交记录
如果不知道要回退到哪个提交号,可以查看最近的提交记录:
git log --oneline -5示例输出:
c3228d9 优化自动播放开关稳定性aedacb5 优化底栏按钮隐藏稳定性xxxxxxx 更早的提交其中:
- 第一行通常是当前最新提交。
- 第二行通常是上一个提交。
- 如果最新提交不想要,可以回退到第二行的提交号。
如果想看更完整的提交图,可以使用:
git log --oneline --graph --decorate --all如果想按提交信息搜索,例如搜索“底栏”:
git log --oneline --all --grep="底栏"三、回退前建议先备份
为了防止回退后又想恢复当前版本,建议先创建一个备份分支:
git branch backup-before-rollback这一步不会改变当前代码,只是把当前状态保存成一个本地备份分支。
如果之后需要恢复,可以切回该备份分支查看:
git checkout backup-before-rollback四、方式一:彻底回退到指定提交
如果你确定最新提交不要了,希望远程仓库也回到之前的状态,可以使用 reset --hard。
假设要回退到:
aedacb5执行:
git reset --hard aedacb5然后强制推送到远程:
git push origin main --force-with-lease完整命令如下:
git checkout maingit pull origin maingit branch backup-before-rollbackgit reset --hard aedacb5git push origin main --force-with-lease说明:
git reset --hard aedacb5:把本地代码强制回到aedacb5这个提交。git push origin main --force-with-lease:把远程main分支也同步回退。--force-with-lease比--force更安全,可以避免误覆盖别人刚推送的内容。
五、方式二:直接回退到上一个提交
如果你只是想撤销当前最新提交,不想手动找提交号,可以使用:
git reset --hard HEAD~1然后推送到远程:
git push origin main --force-with-lease完整命令:
git checkout maingit pull origin maingit branch backup-before-rollbackgit reset --hard HEAD~1git push origin main --force-with-lease说明:
HEAD表示当前最新提交。HEAD~1表示当前提交的上一个提交。- 如果只想撤掉最新一次提交,这个方式最省事。
六、方式三:不改历史记录,使用 revert
如果这个分支有多人协作,不建议强制回退远程历史,可以使用 revert。
假设要撤销的提交是:
c3228d9执行:
git revert c3228d9git push origin main说明:
git revert不会删除历史提交。- 它会生成一个新的提交,用来抵消之前那个提交的改动。
- 适合多人协作项目。
七、回退后检查结果
回退完成后,查看最近提交:
git log --oneline -5查看工作区状态:
git status正常情况下会显示类似:
On branch mainYour branch is up to date with 'origin/main'.nothing to commit, working tree clean也可以查看远程仓库页面,确认最新提交已经变成目标提交。
八、常用场景选择
| 场景 | 推荐命令 |
|---|---|
| 只想撤掉最新一次提交 | git reset --hard HEAD~1 |
| 想回退到某个指定提交 | git reset --hard 提交号 |
| 已经推送远程,并且想远程也回退 | git push origin main --force-with-lease |
| 多人协作,不想改历史 | git revert 提交号 |
| 不知道提交号 | git log --oneline -5 |
| 想按提交信息搜索 | git log --oneline --all --grep="关键词" |
九、你这次的推荐操作
根据当前情况:最新提交是 c3228d9,你想回到上一条稳定提交 aedacb5。
最推荐流程:
git checkout maingit pull origin maingit log --oneline -5git branch backup-before-rollbackgit reset --hard HEAD~1git push origin main --force-with-lease如果你已经知道目标提交号,也可以写成:
git checkout maingit pull origin maingit branch backup-before-rollbackgit reset --hard aedacb5git push origin main --force-with-lease十、注意事项
git reset --hard会丢弃当前工作区未保存的修改。- 执行前建议先运行:
git status- 如果有未提交但还想保留的内容,可以先暂存:
git stash- 如果是多人协作项目,优先考虑
git revert,不要随便强推。 - 如果确定这个分支只有自己使用,
reset --hard + --force-with-lease是最快的回退方式。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!