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 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
承渊政道6 小时前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee
Doro再努力6 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
摇滚侠8 小时前
MAC IDEA GIT 提交区显示了几个不存在的目录
git·idea
城东9 小时前
Git使用[远程仓库远端的head比本地和提交的head旧,其他人拉不到最新代码]
git·head·远程仓库远端·比本地和提交的head旧·其他人拉不到最新代码
何中应18 小时前
使用SSH地址拉取远程仓库代码报下面的错误
git
何中应18 小时前
Git本地仓库命令补充
git
sun00770020 小时前
执行repo sync -c -d -j4以后,提交未git push的代码看不到了。要怎么恢复?
git
胖虎11 天前
Git 一个本地仓库同时推送到两个远程仓库(详细教程)
git·多远程仓库·双远程仓库·git双远程·git备份
春日见1 天前
如何创建一个PR
运维·开发语言·windows·git·docker·容器