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

相关推荐
Greg_Zhong1 小时前
Git创建任务分支进行开发,最后合并主分支master【纯git命令执行过程】阐述
git
眯眼因为很困啦2 小时前
GitHub Fork 协作完整流程
前端·git·前端工程化
AlexDeng4 小时前
Git 中模糊搜索分支名称并创建本地跟踪分支
git
jxm_csdn8 小时前
递归工程工厂:Claude Code + Git Worktrees + Tilix/Tmux 的“AI分身”编码团队
人工智能·git
码咔吧咔8 小时前
Git 中 pull.rebase = true 的作用与设置方法详解
git
郑州光合科技余经理11 小时前
开发实战:海外版同城o2o生活服务平台核心模块设计
开发语言·git·python·架构·uni-app·生活·智慧城市
我是海飞11 小时前
Git 本地仓库推送到远程空仓库指南
大数据·git·elasticsearch
记得开心一点嘛11 小时前
如何去使用git进行协同开发?
git
GHL2842710901 天前
git cherry-pick使用
git
小龙1 天前
【Git 报错解决】本地分支与远程分支名称/提交历史不匹配
大数据·git·elasticsearch·github