在Git中,如何恢复提交之前已还原的暂存文件?

我试图使用Git Tower将更改引入我的存储库。当我这样做时,发生了冲突,并且我错误地进入了所有阶段(因为我想在解决冲突后进行提交)。当我这样做时,冲突将自己标记为已解决。

我想手动解决更改,所以我点击了“中止合并”,但是,当我这样做时,它回滚了我所有的更改!有什么办法让他们回来吗?



哈士奇WWW
浏览 1791回答 3
3回答

慕虎7371278

如果您有上演git的任何东西,您应该应该能够将其恢复。(如果您只是更改了工作副本,则将无法还原它。)首先:你不运行git gc。在继续之前,请备份您的存储库和工作副本。(请确保备份.git目录。)也请避免在发生这种情况的情况下关闭终端和/或重新引导-如果所有操作均失败,则您有机会在历史记录/内存中查找内容。无论如何,首先要尝试的是:git fsck-丢失了它将打印类似检查对象目录:100%(256/256),已完成。检查对象:100%(30165/30165),已完成。悬空Blob 8f72c7d79f964b8279da93ca8c05bd685e892756悬空提交4993502a6394491190d3f4d6fb3d1e14019c2e9b由于您丢失了暂存文件并且没有进行提交,因此您对dangling blob条目感兴趣。git show <sha>逐一运行-其中一些应该是您的文件。

MM们

一个很晚的答案可以通过更快地找出应该恢复哪些斑点来简化恢复:git fsck --full --no-reflogs --unreachable --lost-found | grep blob | cut -d\&nbsp; -f3 | while read in; do printf "blob: $in\n"; git cat-file -p $in; printf "\n--------------------------------\n"; done > recover.txt此命令将创建一个文件,其中包含可以恢复的每个Blob的哈希值以及该Blob的内容。这样,您可以轻松搜索该文件并使用给定的哈希值恢复所需的Blob(使用命令git cat-file -p 8f72c7d79f964b8279da93ca8c05bd685e892756 > myFile.txt)PS:如果您有很多无法访问的Blob,此文件可能会变得很大。
打开App,查看更多内容
随时随地看视频慕课网APP