问题描述:
在 A 状态 commit 后,又进行了一些编辑,这些编辑并不想全部保存 commit 上去。这个状态叫 C。后来一不小心,把 C 状态 commit 了,工作区的内容被提交至暂存区,状态变为 B commit 了。现在要撤消 commit C => B 这个动作,并使文件恢复成 C 状态。
预热:
本文将使用到的命令:(看完再尝试)
| 命令 | 用途 | 示例 |
|---|---|---|
git log | 查看历史 commit | |
git reflog | 查看最近操作 | 一般会有 HEAD@{N} 表示第几步操作,逆序 |
git reset | 重置当前空间 | git reset commitHash 回撤至 commitHash 次提交结果 |
本文相关概念:
| 概念 | 解释 |
|---|---|
| 工作区 | 编辑文件、写代码的“地方”,修改过的代码放在此处 |
| 暂存区 | commit 后放置的地方,保存修改,等待提交 |
解决方案:
git log
查看目前所有提交。找到 commitA 与 commitB 的 hash 值。
git reset –hard commitB_hash
将工作区,暂存区强制恢复成 commitB 的状态
git reset commitA_hash
恢复 commitA 状态的源码。
此时由于 工作区存放的是 commitB 的代码,而暂存区存放的是 commitA 的代码。由 A –> B 的状态就是错误提交前的编辑状态。
本文介绍如何撤销错误的Git提交,并恢复至提交前的状态。通过使用`git log`和`git reflog`查找提交记录,利用`git reset --hard`及`git reset`命令实现文件状态的准确恢复。
7430





