Git 修复丢失的树
我的git回购已经损坏,不幸的是它只存在于本地Git 修复丢失的树,git,Git,我的git回购已经损坏,不幸的是它只存在于本地 $ git fsck --full Checking object directories: 100% (256/256), done. broken link from tree 54b4ff576b2e39831a298e58a38d91890f622b63 to tree d564d0bc3dd917926892c55e3706cc116d5b165e missing tree d564d0bc3dd9
$ git fsck --full
Checking object directories: 100% (256/256), done.
broken link from tree 54b4ff576b2e39831a298e58a38d91890f622b63
to tree d564d0bc3dd917926892c55e3706cc116d5b165e
missing tree d564d0bc3dd917926892c55e3706cc116d5b165e
我检查了什么是d564d0bc
,它是rails项目中我的log/
文件夹。此文件夹仅包含*.log
文件(被忽略)和.gitkeep
文件
我尝试按照本文中提到的步骤进行操作,但我正在使用GitHub for Windows,powershell正在通过空管道向我尖叫
感谢您的帮助
更新:我将该项目复制到linux中,这样就不用担心powershell命令了。不过,我仍然没有找到解决方案。如果您确定丢失的树只包含.gitcept文件,并且您有它的内容,则可以重新创建丢失的树 你只需要知道一堆低级的git命令?你准备好了吗?走! 首先。您需要使用
git mktree
此命令读取标准数据,并基于此信息创建树。它输出新创建树的sha1总和(别忘了检查它是否等于d564d0bc3dd917926892c55e3706cc116d5b165e)
接下来你需要知道这个输入的格式是什么?!
格式如下
<mode> SP <type> SP <object> TAB <file>
你需要跑步
echo -e "100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391\tsome_file" | git mktree
但是你是怎么找到想要的sha1哈希的git散列对象
解救。
只是
来确定它的散列。我认为修复存储库所需的全部知识都已具备。非常感谢。对于可能存在此问题的任何其他人,您需要将
cd
放入文件夹中,而不能仅使用路径。在我的例子中,我必须进入我的log
文件夹。我使用的最后一个命令是:echo-e“100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391\t.gitkeep”| git mktree
+1用于实现移动到正确的外壳您使用了什么命令“。。。检查d564d0bc是什么?@EoghanM抱歉,检查很混乱。我调查了一下那是什么。这是一个很长的时间,但我想这可能只是一个git签出d564d0bc
echo -e "100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391\tsome_file" | git mktree
git hash-object log/.gitkeep