遇到 git 误提交的情况,但是还没有上传,该如何回退到上次提交并进行额外的修改。我每次都要查,让 AI 梳理了最简指导手册。一、撤销「上一次提交」但保留改动(你的场景) 最常见的需求:误提交了,想退回上次提交、接着改,改完再重新提交。 git reset --soft HEAD~1 # 撤销提交,改动回到「暂存区」 或 git reset HEAD~1 # 撤销提交,改动回到「工作区」(未暂存) HEAD~1 = 上一次提交(父提交)然后你正常改文件 → git add → git commit 重新提交即可reset 三种模式,记这一个表就够了: 命令 HEAD 暂存区 工作区文件 效果 git reset --soft HEAD~1 回退 保留 保留 撤销提交,改动还在暂存区 git reset HEAD~1(默认 mixed) 回退 重置 保留 撤销提交,改动回到未暂存 git reset --hard HEAD~1 回退 重置 清空 撤销提交并丢弃改动 ▎ --hard 会删掉改动,慎用。想「退回上次提交、又要接着改」永远用 --soft 或默认的 mixed。二、只是想给上次提交「补点东西」 不需要撤销重来,直接把新改动并进去: git add 改动的文件 git commit --amend --no-edit # 并入上次提交,消息不变 git commit --amend # 并入 + 顺便改提交消息三、特殊情况:只有一次提交 HEAD~1 要求至少有 2 次提交。像你这个仓库之前只有 ee01887 一条,HEAD~1 会报错——这时直接 git commit --amend 就行,它天然就是「在这一次提交上改」。四、救命稻草:reflog 不管用 reset 还是 amend 改错了,历史都没真丢: git reflog # 列出你所有的 HEAD 移动记录 git reset --hard <某条id> # 回到任意一个时间点 只要没 git gc --prune=now 清掉,reflog 里的提交都能找回。 一句话总结:没 push → 撤销用 git reset --soft HEAD~1,补改用 git commit --amend,改崩了看 git reflog。
git 提交回撤备查
遇到 git 误提交的情况,但是还没有上传,该如何回退到上次提交并进行额外的修改。我每次都要查,让 AI 梳理了最简指导手册。
一、撤销「上一次提交」但保留改动(你的场景)
最常见的需求:误提交了,想退回上次提交、接着改,改完再重新提交。
然后你正常改文件 → git add → git commit 重新提交即可
reset 三种模式,记这一个表就够了:
▎ --hard 会删掉改动,慎用。想「退回上次提交、又要接着改」永远用 --soft 或默认的 mixed。
二、只是想给上次提交「补点东西」
不需要撤销重来,直接把新改动并进去:
git add 改动的文件 git commit --amend --no-edit # 并入上次提交,消息不变 git commit --amend # 并入 + 顺便改提交消息
三、特殊情况:只有一次提交
HEAD~1 要求至少有 2 次提交。像你这个仓库之前只有 ee01887 一条,HEAD~1 会报错——这时直接 git commit --amend 就行,它天然就是「在这一次提交上改」。
四、救命稻草:reflog
不管用 reset 还是 amend 改错了,历史都没真丢:
只要没 git gc --prune=now 清掉,reflog 里的提交都能找回。
一句话总结:没 push → 撤销用 git reset --soft HEAD~1,补改用 git commit --amend,改崩了看 git reflog。