git commit --amend 之后,想要修改为git commit , 如何处理?

执行 git commit --amend 后,如果想撤销这次 amend 操作,恢复到它之前的那个 commit 状态,你需要使用 git refloggit reset 命令。

核心思路

git commit --amend 并不是真的"修改"了上一个提交,而是创建了一个全新的提交 来替换掉它。不过,Git 并不会立即丢弃那个被替换掉的旧提交,它只是暂时"隐藏"了起来。我们可以通过 git reflog 找到这个旧提交,然后将分支指回它。

步骤一:查找历史记录 (git reflog)

首先,在你的终端里运行 git reflog 命令。这个命令会显示 HEAD 指针最近的所有移动记录,包括每一次 commit、amend、reset 等操作。

你会看到类似下面的输出:

bash 复制代码
a1b2c3d HEAD@{0}: commit (amend): Your new amended commit message
f9e8d7c HEAD@{1}: commit: Your original commit message
... (更早的记录)

分析这个输出:

  • HEAD@{0} 是你当前所在的位置,也就是 git commit --amend 之后创建的新提交 (a1b2c3d)。
  • HEAD@{1} 就是你执行 amend 操作之前 的那个提交,也就是你想要恢复到的原始提交 (f9e8d7c)。

你的目标就是恢复到 HEAD@{1} 这个状态。

步骤二:重置分支状态 (git reset)

找到了目标提交后,使用 git reset 命令将当前分支的 HEAD 指针移回那个原始提交.

如果你只是想撤销 amend 这个提交动作,但又希望保留 你在 amend 时所做的代码修改,可以使用 --soft--mixed 参数。

  • 使用 --soft

    perl 复制代码
    bash
    git reset --soft HEAD@{1}

    这会撤销 amend 提交,并将 amend 中所做的所有代码改动放回到暂存区(Staged) 。你可以重新 git commit

  • 使用 --mixed (默认选项):

    perl 复制代码
    bash
    git reset --mixed HEAD@{1}
    # 或者 git reset HEAD@{1}

    这会撤销 amend 提交,并将 amend 中所做的所有代码改动放回到工作区(Working Directory) ,你需要重新 git addgit commit

相关推荐
大柏怎么被偷了2 小时前
【Git】企业级开发模型
git
Garfield20053 小时前
Git 分支拓扑实践
git·拓扑
DKNG3 小时前
【Windows Host】 hosts配置增加访问github流畅度
人工智能·git·github
一个很帅的帅哥5 小时前
git命令大全
大数据·git·elasticsearch
凯子坚持 c6 小时前
Git 远程仓库操作与深度进阶指南
git
勇敢牛牛_6 小时前
RustRover 2025.3 在WSL中GIT操作十分缓慢的问题
git·rust·rustrover
编程小白gogogo7 小时前
创建git仓库并推送苍穹外卖初始项目
git
cat_milk7 小时前
【git】git的基础使用二
git
XiaoHamao8 小时前
Git 核心分区全解析
git
XiaoHamao8 小时前
git stash:优雅处理未完成的代码改动
git