【高频面试题】git怎么回退已提交的代码

发布时间:2026/9/14 23:14:17
【高频面试题】git怎么回退已提交的代码 Git 回退已提交代码分两种场景还没推远程/已经 push 到远程前提概念git log看提交记录拿到 commit-id哈希串取前 7 位即可HEAD 当前最新提交一、本地已 commit但还没 push 到远程最简单1. reset 回退推荐丢弃后面提交# 软重置保留代码改动只是撤销commit代码回到工作区可重新提交 git reset --soft commit-id # 硬重置彻底删掉后面所有提交代码直接退到该版本**改动全部丢失谨慎** git reset --hard commit-id示例git log git reset --soft abc1234--softcommit 没了代码还在适合改完重新 commit--hard代码 提交全部回滚不要随便在公共分支用2. revert生成一条新提交不删除历史公共分支优先用这个git revert commit-idrevert 不会抹掉旧提交新增一条反向提交适合多人协作分支。新建反向提交git revert不是删掉原来的 commit而是自动生成一条全新的 commit这条新提交做「逆向操作」把上一次提交改的代码原样抵消掉。重点原来那条错误提交依然留在 Git 历史里不会消失。二、代码已经 push 到远程仓库❗️❗️❗️重点团队协作严禁直接 reset --hard 强推公共主分支⚠️ 核心原则公共分支main/master/dev一律优先使用 git revert因为reset force 会删掉远程历史别人拉代码会炸多人协作禁止场景 A公共分支dev/main多人共用 使用 revert推荐想要撤销某次提交生成一条新提交记录# 撤销指定那一次commit git revert commit-id # 提交到远程 git push例子如果要撤销最近 1 次提交git revert HEAD git push优点历史完整、安全其他人直接正常 pull不会冲突。场景 B自己的私有分支只有你一个人在用可以 reset 强推仅个人开发分支没人拉这个分支才可以用git reset --hard commit-id # 强制覆盖远程分支 git push -f❗ 公共分支千万别git push -f会覆盖队友提交三、两个命令对比面试常问命令作用适用场景风险git reset移动 HEAD 指针删除后续提交记录本地未推送 / 自己私有分支公共分支强推会破坏他人代码git revert新建反向提交保留全部 git 历史公共分支、多人协作线上主分支会多一条提交记录四、快速找回误删提交救急如果 reset 后找不到 commit 了git reflogreflog记录本地所有 HEAD 变动拿到丢失 commit-id再 reset 回去。五、高频实操示例示例 1撤销最近一次提交代码保留本地重新修改再提交git reset --soft HEAD~1 # HEAD~1 代表上一个commitHEAD~2 上两次示例 2公共分支撤销上一次已经推送到远程的提交git revert HEAD git push✅ 一句话选型口诀本地没 pushreset --soft保留代码公共分支已经 push用 revert不要 reset 强推自己单人私有分支reset --hard push -f