You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

切换分支后Git分支编辑内容丢失,如何恢复未提交更改?

恢复Git中丢失的未提交更改

别慌,你这种情况里的未提交改动其实大概率能找回来——Git并没有直接删除这些内容,只是把它们标记成了未被引用的临时对象存放在本地仓库里。下面给你两种实用的恢复方法:

方法一:用git fsck查找丢失的对象

这是最常用的恢复未提交改动的方式,步骤如下:

  1. 在仓库根目录运行命令:
    git fsck --lost-found
    
    这个命令会扫描Git的对象数据库,把所有未被分支、标签或其他引用关联的对象,放到仓库的.git/lost-found/other目录下。
  2. 查看这些临时对象的内容,找到对应foo.txt的版本:
    你可以逐个查看对象内容,用以下命令:
    git show <对象ID>
    
    或者直接查看文件:
    cat .git/lost-found/other/<对象ID>
    
    (对象ID是.git/lost-found/other目录下的文件名,比如a1b2c3d...
  3. 找到正确的版本后,把内容写回foo.txt:
    git show <对象ID> > foo.txt
    
    或者直接复制对象里的内容,粘贴到foo.txt中保存即可。

方法二:检查Git的临时 stash(如果自动触发过)

虽然你没手动执行git stash,但有时候Git在强制切换分支时,会自动帮你 stash 未提交的改动。你可以运行以下命令查看:

git stash list

如果能看到对应的 stash 记录,用以下命令恢复:

git stash apply stash@{n}

(把n换成列表里对应的序号,比如stash@{0}

后续注意事项

为了避免以后再遇到这种问题,建议你在切换分支前,先把未提交的改动临时保存:

  • 执行git stash:把当前工作区的改动暂存起来
  • 切换分支完成后,再执行git stash apply恢复之前的改动

内容的提问来源于stack exchange,提问作者jjk

火山引擎 最新活动