Git - “非单调索引”

问题描述 投票:0回答:5

我正在本地电脑上克隆一个 git 存储库。 在此过程中,该命令输出大量以下错误消息:

error: non-monotonic index .git/objects/pack/._pack-*.idx

此消息保留在拉动或分支交换机上,例如,但一切似乎都有效。本地存储库似乎没有损坏或类似的情况。

关于错误消息有什么想法吗?

git
5个回答
3
投票

在我看来,这些只是 OSX 创建的一堆 ._ 文件,而 git 不明白它需要忽略它们。我对大量这样的文件也遇到了同样的问题。只需删除 ._* 似乎就解决了它。


2
投票

我正在寻找这种非单一错误的信息,并找到了此链接:http://git.661346.n2.nabble.com/Error-non-monotonic-index-after-failed-recursive-quot- sed-quot-命令-td7575014.html

TL;DR:删除非单一索引,然后重新索引它。在 Linux 中它将是:

> rm .git/objects/pack/pack-*.idx
> git index-pack .git/objects/pack/pack-*.pack 

在此之后,我必须运行一些

git gc --prune=now
git remote prune origin
,但我之前做过一些其他操作,所以我可能破坏了我的存储库。


1
投票

当您移动存储库时,会在 MacOS 系统上生成名称类似于“._pack-*.idx”的文件。

查看远程存储库所在的位置:my-repo.git/object/pack。在这里,您将拥有正常的 pack*idx 文件和 MacOS 生成的同名但前缀为 ._

的文件

删除它们,你的仓库就可以了。


0
投票

您可以删除这些文件。

find "${1:-.}" -type f -name '._*' -exec rm -v {} \;

-1
投票

在 MacOS 上,如果您尝试将本地存储库保存在已安装的卷上,例如网络驱动器,删除

._*
文件将不起作用,因为它们是重新创建的。相反,将
._*
添加到您的 .gitignore 让 git 忽略这些文件。

如果这不起作用,您的 .gitignore 可能是问题所在。使用文本编辑器打开 .gitignore,将其另存为

UTF-8
并在终端中运行以下命令:

git rm -r --cached .
git add .
© www.soinside.com 2019 - 2024. All rights reserved.