我正在本地电脑上克隆一个 git 存储库。 在此过程中,该命令输出大量以下错误消息:
error: non-monotonic index .git/objects/pack/._pack-*.idx
此消息保留在拉动或分支交换机上,例如,但一切似乎都有效。本地存储库似乎没有损坏或类似的情况。
关于错误消息有什么想法吗?
在我看来,这些只是 OSX 创建的一堆 ._ 文件,而 git 不明白它需要忽略它们。我对大量这样的文件也遇到了同样的问题。只需删除 ._* 似乎就解决了它。
我正在寻找这种非单一错误的信息,并找到了此链接: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
,但我之前做过一些其他操作,所以我可能破坏了我的存储库。
当您移动存储库时,会在 MacOS 系统上生成名称类似于“._pack-*.idx”的文件。
查看远程存储库所在的位置:my-repo.git/object/pack。在这里,您将拥有正常的 pack*idx 文件和 MacOS 生成的同名但前缀为 ._
的文件删除它们,你的仓库就可以了。
您可以删除这些文件。
find "${1:-.}" -type f -name '._*' -exec rm -v {} \;
在 MacOS 上,如果您尝试将本地存储库保存在已安装的卷上,例如网络驱动器,删除
._*
文件将不起作用,因为它们是重新创建的。相反,将 ._*
添加到您的 .gitignore 让 git 忽略这些文件。
如果这不起作用,您的 .gitignore 可能是问题所在。使用文本编辑器打开 .gitignore,将其另存为
UTF-8
并在终端中运行以下命令:
git rm -r --cached .
git add .