"could not find a compatible repository" gitkraken 回购错误

"could not find a compatible repository" error on gitkraken repo

我有一个多年来一直使用的存储库,通过 GitKraken 使用。我只是使用 CLI 为存储库分配了一个标签(使用代码 git tag -a v0.7.1 -m "my version 0.7.1" ea27f3b3ab882e58cbb5995f5d8638a200676a43 然后 git push --tags),之后 GitKraken 将不会打开它。它说那里没有存储库并询问我是否要初始化一个新的存储库。

我的任何其他存储库都没有问题。此外,此回购协议在命令行中运行良好。我试过手动删除该文件夹,然后在同一位置从 github 再次克隆它,但没有帮助。我也在本地尝试过 git reset --hard,但没有用。某些 google 搜索会显示深层嵌套文件上的长路径名之类的东西,但我没有(而且我在 MacOS 上而不是 Windows)。

有什么想法吗?

这是由 GitKraken 团队的 Jake 在 GitKraken slack 上解决的。如果将来可能对某人有所帮助,我将 post 解决方案放在这里。

我的存储库中似乎有两个格式错误的 ref,一个到我的 master 分支,另一个到我上面提到的 v0.7.1 标签。删除标签和 master 分支,解决了这个问题。

我在尝试打开存储库时遇到了同样的错误。当我尝试克隆任何存储库时,我收到消息:

"C:/Users/Username/.gitconfig":访问被拒绝

我删除了文件,现在两条消息都没有了。

尝试此操作的任何人都应将文件保存在别处以防万一。

为了解决这个问题我使用了 visual studio 代码,我在 IDE 上打开它并使用扩展名提交文件夹中的所有文件。 这是找到的解决方案linkThe link to a website

我刚刚在使用 GitKraken 时遇到了同样的问题。它会继续显示此“兼容存储库”消息,即使它会加载存储库并让我暂存和浏览提交。然而,大约一分钟后,它会卸载 repo 并开始尝试再次加载它,但只是挂起尝试加载。其他工具(Giggle、gitg、git-gui 和 git CLI)似乎都运行良好。

一个解决方案

更深入地挖掘,我发现,显然,我的 reflog 中的某些内容已损坏。您可以检查 .git/logs/refs/heads/*.git/logs/refs/remotes/*/* 中的文件,寻找任何看起来非常不寻常的行。所有行看起来都应该非常相同(from-hash、to-hash、timestamp、user、message 等等)。我日志中损坏的行有很多奇怪的符号,长度是其他行的 4 倍。很明显。

我还发现了一些零字节对象,这不应该。这些是临时文件,应该用数据填充或删除但没有,因为......原因。可以安全地删除它们。

find .git/objects -size 0 -type f -delete

核选项

为了让我的 GitKraken 再次工作,我需要使用 Nuclear Option。

好的,如果您仍然遇到问题并且确定您的 reflog 中不需要任何东西,包括您的 STASH,您现在可以将其全部过期并清理(垃圾收集)悬挂参考:

git reflog expire --expire=now --all
git gc --prune=now

好吧,我想还有一个更极端的步骤,因为您可以删除存储库并重新克隆,但您会丢失所有本地分支、存储和未推送的提交。我对此并不满意。