GIT说我没有回购承诺 - 如何恢复?

时间:2012-01-03 00:20:27

标签: git windows-7 recovery git-extensions

使用64位Win7。

我使用的GitExtensions GUI已经运行了3个月。今天我做了一个提交,立即推送到我的服务器仓库,然后关闭。当我在当天晚些时候重新启动并尝试进行另一次(本地)提交时,GitExtensions告诉我,我从未承诺过该回购并显示了119个带有更改的文件。

显然有些东西被炸了,所以我的第一个想法就是从我的服务器回购中拉出来。你猜怎么着?服务器仓库也显示我从未承诺过它。

那么我接下来的想法是GitExtensions对我撒谎。所以我转到了Tortoise GIT并做了一个" View Log"。你猜怎么着? GitExtensions并不撒谎。 Tortoise GIT也表明我从未承诺过我的回购。

当我在仓库中进行实际浏览时,我可以看到所有具有合理外观时间戳的目标文件,涵盖了我在该项目中工作的3个月。

如何让GIT恢复并意识到我还有3个月的提交时间?我所见过的唯一文章是关于如何恢复需要使用早期提交作为起点的个别丢失提交。显然,由于我无法看到任何提交,因此无法帮助我。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

首先,备份您的存储库,以便任何失败的尝试修复都不会使其更糟糕。

git fsck可以帮助查找和修复存储库中的错误。

git reflog可以帮助您识别孤立提交并重建历史记录。

"bad default revision"错误的答案可能有所帮助。

如果fsck对你没有任何帮助,我首先想到的是尝试将远程存储库的HEAD重置为一次提交,然后尝试重新克隆。

答案 1 :(得分:1)

检查“git log master”或任何其他分支的内容。如果可行,您可以使用“git bundle”显式导出提交和所有相关对象。冲洗并重复询问.git / refs中的其他分支。

最好是下拉到命令行来解决这个问题。下载最新的msysgit。

答案 2 :(得分:0)

.git文件夹是否还在那里?如果是这就是git存储所有信息的地方。如果没有,那么没有什么可以回来的。如果没有,那么你当地的git就不见了。如果.git仍然存在,请尝试运行git log并查看它显示的内容。

如果您的.git文件夹不见了,那么您应该可以从服务器执行“新”克隆来检索所有内容。