Git 后悔药手册:提交写错、文件误删、分支走偏怎么救

举报
yd_281047095 发表于 2026/10/29 09:07:35 2026/10/29
【摘要】 写代码时最怕的不是报错,而是手一抖把东西弄丢。下面是我整理的几个 Git 常见“后悔”场景和对应的补救命令,都是日常能用上的。 1. 刚提交完,发现提交信息写错了git commit --amend -m "新的提交信息"这条命令会替换最近一次提交。注意:如果这次提交已经推送到远程,就不要再改了,否则要强制推送,会影响别人。 2. 漏加了一个文件,想并进上一次提交git add 漏掉的文件g...

写代码时最怕的不是报错,而是手一抖把东西弄丢。下面是我整理的几个 Git 常见“后悔”场景和对应的补救命令,都是日常能用上的。

1. 刚提交完,发现提交信息写错了

git commit --amend -m "新的提交信息"

这条命令会替换最近一次提交。注意:如果这次提交已经推送到远程,就不要再改了,否则要强制推送,会影响别人。

2. 漏加了一个文件,想并进上一次提交

git add 漏掉的文件
git commit --amend --no-edit

--no-edit 表示沿用原来的提交信息。

3. 把文件从暂存区拿回来

git restore --staged 文件名

文件内容不会变,只是不再进入下一次提交。

4. 想丢掉工作区里的修改

git restore 文件名

这一步会直接覆盖本地修改,而且无法恢复,执行前先确认一下。

5. 手头的活没做完,却要临时切分支

git stash push -m "做到一半的功能"
git switch 其他分支
# 处理完回来
git stash pop

stash 相当于把现场先收起来,回来再原样拿出。

6. 提交已经做了,想回到之前的状态

git reset --soft HEAD~1   # 撤销提交,保留暂存区和修改
git reset --mixed HEAD~1  # 撤销提交,保留修改但取消暂存(默认)
git revert 提交ID         # 新增一个反向提交,适合已推送的提交

已经推送过的提交,优先用 revert,它不会改写历史。

7. reset 之后又后悔了

git reflog
git reset --hard 想回去的提交ID

reflog 记录了 HEAD 的每一次移动,所以即使分支被改乱,通常也能找回。它是 Git 里最重要的保险。

小结

先弄清楚改动现在处在哪里:工作区、暂存区,还是已经提交。再选对应的命令。已经推送的内容用 revert,没推送的可以 amend 或 reset。遇到拿不准的情况,先执行 git status 和 git reflog,再动手。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。