Sunday面试指南

git reset 和 git revert 有什么区别?已经推送的提交应该怎样撤销?

以下对话为教学模拟,不是真实面经。

🧑‍💻 面试官:git reset 和 git revert 有什么区别?

🙋‍♂️ 我:reset 回到以前,revert 撤销提交。

🧑‍💻 面试官:同事已经拉取了这个提交,你再把分支指针移回去,远端历史会怎样?revert 后原来的提交还在吗?

先判断历史有没有共享,再决定是移动分支,还是新增一个反向提交。

面试速答(60 秒版)

git reset 可以移动当前分支位置,并根据模式决定是否重置暂存区和工作区。git revert 则依据已有提交生成反向修改,再创建一个新提交,原提交仍保留在历史里。

对于尚未共享的本地提交,reset 可以用来整理历史。但已经推送并被别人使用的提交,通常优先用 revert,让大家能够沿着同一条历史同步。

reset 的 soft、mixed 和 hard 对本地文件影响不同,hard 可能丢弃未提交修改,不能把它当成随手撤销按钮。

执行之前,我会先检查状态、目标提交和共享情况。撤销合并提交或存在后续依赖时,还要判断反向修改是否符合当前代码,而不是只背命令。

速答总览:reset 编辑分支位置,revert 追加反向修改;选择首先取决于历史是否共享。

知识点详解:两种撤销,改变的是不同对象

reset 先改变分支所指的位置

咱们假设历史是 A → B → C,当前分支指向 C。如果把分支 reset 到 B,分支就不再通过这条路径包含 C。

不过,文件怎样处理还要看模式:

模式分支位置暂存区工作区
soft移到目标保留保留
mixed移到目标重置保留
hard移到目标重置重置,存在数据丢失风险

Git reset 官方文档给出了这些模式的行为。默认 mixed,不代表一定没有风险;目标选择错误也可能打乱已有工作。

这里解释命令语义,不在你的仓库中执行撤销。真实操作前需要检查 git status,并妥善保留尚未提交的工作。

reset 三种模式改变的本地对象

revert 不抹去 C,而是追加一个修正

同样是 A → B → C,对 C 执行 revert,正常情况下得到 A → B → C → R。R 尝试反向修改 C 带来的变化。

所以,原提交仍然可以追溯。其他人更新分支时,获得的是一个新提交,不需要把自己的历史强行替换成另一条。

Git revert 官方文档说明了反向修改与冲突处理。它不是把整个项目快照强制恢复为 C 之前的样子;C 后面的相关修改可能影响反向应用,甚至引发冲突。

已推送,意味着还要考虑其他人的历史

如果远端已经包含 C,把本地分支 reset 到 B以后,普通推送通常不能直接用旧历史替换新历史。强制推送可能让其他人的分支与远端不一致。

因此,共享历史上的修正通常使用 revert。团队确实约定可以重写某些分支时,也要明确协作范围和恢复方案,不能仅凭“我推送的提交”就认为只有自己受影响。

反过来,本地尚未共享的提交需要调整顺序、重新组织,reset 等历史编辑工具就可能适合。判断依据是协作状态,不是命令哪个更熟悉。

撤销以后,仍要确认代码语义

假设 C 引入了一个字段,后来的 D 已经依赖它。反向删除字段可能让 D 无法工作,即使 Git 没有文本冲突。

所以,需要测试实际功能。文本合并成功,只能说明修改可以应用,不能证明业务行为正确。

合并提交还有多个父提交,revert 时需要明确相对哪个主线计算反向变化。后续再合并也会受到历史关系影响,不能把普通提交的例子直接套过去。

如果操作错误,reflog 有时能够帮助找到本地曾经的引用位置,但它不是可靠的长期备份,也不能保证恢复所有未提交文件。先保护数据,比事后期待找回更重要。

文本撤销成功不代表后续依赖仍正确

面试官继续追问

已推送但没人用,可以 reset 吗?

需要团队确认分支允许重写,并核实没有其他依赖。仅凭没有人回复,不等于确定无人使用。共享主分支尤其应优先追加修正。

revert 之后能再恢复原修改吗?

可以考虑反向撤销 revert 或重新应用所需修改,但仍要检查现在的代码与依赖。不应把命令嵌套理解成无条件回到某个状态。

soft 和 mixed 最常见的区别是什么?

soft 保留暂存区,mixed 会重置暂存区但保留工作区。两者都可能让修改留在本地,只是暂存状态不同。

面试速记卡

  • reset:移动分支,模式决定暂存区与工作区处理。
  • revert:追加反向提交,原历史保留。
  • 共享历史:通常用追加修正,谨慎重写。
  • hard 风险:可能丢弃未提交工作,不是普通撤销按钮。
  • 验证重点:命令成功还要检查后续依赖与实际功能。

公司面试真题

这道题暂未收录可核验的公司真题来源。你可以先阅读本文解析,或浏览已收录的公司面试真题。

浏览公司面试真题 →
简历汪永久免费在线制作简历,模板直接套用、导出无水印,永久免费、下载免费,不需要付费解锁任何功能。去写简历