本地分支恢复求助:删除含未提交未暂存变更的子分支后,原分支变更能否找回?
恢复已删除分支上的未提交/未暂存变更
可以尝试以下步骤找回丢失的变更:
查看Git引用日志定位分支痕迹
执行git reflog命令,它会记录所有HEAD的移动历史,包括已删除分支的操作记录。找到对应子分支的最后一条记录(比如类似a1b2c3 HEAD@{3}: checkout: moving from test-branch to main),其中的a1b2c3就是子分支被删除前的HEAD哈希值。恢复到该哈希值对应的状态
执行git checkout a1b2c3,此时会进入分离HEAD状态,你之前的未提交/未暂存变更应该会出现在工作区中。如果上述方法没找到,查找Git临时对象
执行git fsck --lost-found,这个命令会扫描所有未被引用的Git对象,并将它们存入.git/lost-found/目录。之后可以用git show <对象哈希值>逐个查看这些对象的内容,找到包含你丢失变更的文件。保存找回的变更
一旦找回变更,立即通过git stash push暂存,或者直接git add .+git commit -m "恢复丢失的未提交变更"将其保存到原分支。
注意:如果删除分支后没有执行过多Git操作(比如大量新提交、垃圾回收),找回概率很高——Git默认不会立即清理未被引用的临时对象。
内容的提问来源于stack exchange,提问作者Marvin
相关产品推荐
相关产品推荐

