Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 修复丢失的树_Git - Fatal编程技术网

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回购已经损坏,不幸的是它只存在于本地

$ 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