Git丢失提交恢复求助:提交后仓库回到初始克隆状态
找回丢失的Git提交内容指南
嘿,我懂这种崩溃的感觉——熬了好久的作业突然没了,谁都得慌!不过别放弃,Git其实留了不少“后手”,咱们可以试试这些方法找回你的内容:
1. 挖掘Git的对象仓库(最可能有用的方法)
Git会把所有曾经处理过的内容(哪怕没提交)存在本地.git/objects目录里,咱们可以用这个命令把这些“无主”的对象找出来:
git fsck --lost-found
这个命令会把所有没被任何分支或标签引用的对象,放到.git/lost-found/目录下:
- 进入
.git/lost-found/commits,用git show <commit-hash>逐个查看提交内容,要是找到你的作业更改,直接用git branch recover-my-work <commit-hash>把它变成一个新分支,就能正常使用了。 - 如果你的更改还没来得及
add或commit,就去.git/lost-found/other里找文件blob,用git show <blob-hash>查看内容,把有用的部分复制出来存好。
2. 检查是否有遗忘的Stash
有时候手滑把内容暂存了自己却忘了,试试这个命令看看:
git stash list
要是有结果,用git stash apply stash@{0}(把0换成对应stash的编号)就能把暂存的内容恢复回来。
3. 排查所有本地分支和隐藏引用
说不定你的更改藏在某个没注意到的分支里,先看看所有分支:
git branch -a
切换到陌生的分支看看有没有内容。另外可以用这个命令列出所有Git的引用(包括那些隐藏的):
git for-each-ref --format='%(refname) %(objectname)'
对每个可疑的引用,用git show <object-hash>看看里面的内容。
4. 远程分支救急(如果曾经推送过)
如果你之前把更改推送到过远程的secondary分支,那远程仓库大概率还保留着。试试:
git fetch origin secondary git checkout origin/secondary
切换到远程的secondary分支看看,要是有内容,就基于它创建新的本地分支:git branch new-secondary origin/secondary。
关键提醒
不管找到什么内容,先把文件复制到仓库外的安全地方备份!别等找回来又搞丢了,血的教训啊。
内容的提问来源于stack exchange,提问作者Donat
相关产品推荐
相关产品推荐

