Git Revert使用疑问:是否仅支持HEAD~n语法,提交哈希为何异常?
Git Revert 常见疑问解答
1. Git Revert 只能用 HEAD~n 这类相对引用吗?
当然不是。git revert 完全支持直接使用提交哈希(完整哈希或短哈希),除此之外还支持分支名、标签、HEAD^ 等任何有效的Git提交引用。HEAD~n只是其中一种便捷的引用方式,绝非唯一选项。
2. 为什么用提交哈希执行revert会触发冲突,且解决后分支处于reverting状态?
你遇到的冲突和引用方式无关,只和目标提交的变更与当前分支的代码状态有关:
- 当你执行
git revert <哈希>时,Git尝试撤销该提交的所有变更,如果这些变更和当前分支的现有代码存在重叠(比如同一行代码被修改过),就会触发自动合并冲突。 - 而你用
git revert HEAD~5时没有冲突,只是刚好该提交的变更和当前代码没有重叠冲突而已,和引用方式无关。
冲突解决后分支处于master|reverting状态,是因为Git的revert操作还没完成,你需要手动收尾:
- 先执行
git add <冲突文件名>,把解决完冲突的文件暂存 - 再执行
git revert --continue,Git会自动生成一个新的revert提交,完成整个操作 - 如果不想继续这次revert,执行
git revert --abort即可回到操作前的状态
内容的提问来源于stack exchange,提问作者Jasvinder Singh
相关产品推荐
相关产品推荐

