代码提交时发现本地修改未保存?别慌,这种情况很常见

代码的时候,谁还没遇到过这种糟心事:改了一堆文件,信心满满地打开终端准备提交,结果一查状态,发现有些改动根本没保存。更离谱的是,可能还关掉了编辑器,连临时缓存都没了。

为什么会出现“修改未保存”

最常见的原因就是编辑器里的文件处于“已修改未保存”状态。比如你在 VS Code 里改了三个文件,只点了其中一个的保存,另外两个标签页还带着星号标记,这时候直接切到终端执行 git add 或 git commit,实际上加进去的还是旧版本。

另一个典型场景是用了热重载的开发环境,比如前端项目跑着 npm run dev。你一边看页面效果一边改代码,改完觉得没问题,顺手就提交了。但其实编辑器可能因为卡顿、快捷键误触或者忘记按 Ctrl+S,导致部分变更还在内存里。

怎么避免这种低级失误

最简单的办法是养成提交前检查的习惯。在终端运行这条命令:

git status

看看输出里有没有“尚未暂存以备提交的变更”这一行。如果有,说明当前有修改过的文件没加进去。这时候别急着强推,先回到编辑器,把所有带星号的文件都保存一遍,再重新执行 git add。

还可以给编辑器开启“自动保存”功能。VS Code 里搜 Auto Save,选上 afterDelay,设置个几百毫秒的延迟就行。这样每次离开编辑器或者切换标签页,文件都会自动落盘,基本杜绝手滑。

已经提交了才发现漏了修改?还能救

如果已经 commit 甚至 push 了,才发现少加了一个关键修改,不用删记录重来。可以用 git commit --amend 补上去:

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

这条命令会把新加入的变更合并到最后一次提交里,提交信息不变。注意如果已经 push 到远程,修正后需要强制推送:git push --force-with-lease,但别在主分支上随便用。

日常开发中,这种问题就像做饭忘了放盐——补救不难,关键是及时发现。下次提交前,花三秒钟扫一眼编辑器右上角的小红点或星号,能省去后面十分钟的回滚操作。