用旧版本的git repo覆盖git repo,游戏结束?

时间:2011-04-21 13:32:46

标签: git backup recovery data-recovery

我完全丢失了所有提交内容吗?我知道这是愚蠢的,为此我很抱歉,但这是一个无辜的错误,没有正确地考虑工作流程。

修改

覆盖是手动拖放,没有输入终端命令。

我在Mac上。

我有时间机器,并且可以检索我的新旧回购(如果你知道我的意思,我的头在融化),但我可以合并它们(已经进行了更改,截止日期看)或者我应该恢复完整备份?

3 个答案:

答案 0 :(得分:1)

Windows? Linux?

如果是Windows,您可以使用恢复工具或可以直接读取磁盘的十六进制编辑器尝试恢复文件。在Linux上,我不知道。

但是如果你没有备份......那是你的错! =)

答案 1 :(得分:1)

好吧,它会很麻烦,但你的提交可能仍然存在......

运行git fsck --full(可能需要一段时间) - 它会列出所有悬空的blob / trees / commit。使用git log / git show / gitk检查每个悬空提交。当您找到分支的头部提交时,使用git branch <branchname> <sha1 of commit>重新创建分支(您必须记住您的旧分支名称)


因为您使用时间机器恢复了旧的存储库状态并且现在将旧存储库放在桌面上,所以最简单的方法是添加新的远程控制器,然后获取远程提交:

git remote add old-repo /path/to/your/desktop/old-dir/.git
# sorry, no clue what the actual path might be on mac systems (~/Desktop/…?)
git fetch old-repo

之后,您将从旧存储库中将所有分支作为old-repo/branchname提供。合并它们只需发出git merge old-repo/branch命令。这只是基本的git fu,可以将存储库设置为一个额外的远程并合并其更改(这里没有魔法,移动)

答案 2 :(得分:0)

有时候,有时候你会很幸运。在Windows 7上,打开文件夹的属性,然后单击&#34; Previous Versions&#34;。

我很幸运能够找到使用该技术的旧iPhone备份,看起来我已经全部丢失!!