Git 后悔药手册:提交写错、文件误删、分支走偏怎么救
【摘要】 写代码时最怕的不是报错,而是手一抖把东西弄丢。下面是我整理的几个 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)