我的git设置有一个我推送到的中央存储库。今天,我决定使用Git Extensions查看中央存储库,它显示存储库没有提交(几乎就像从来没有创建过存储库一样)。在调查这个问题时,我试图克隆repo,它给了我一些从未见过的奇怪的错误:
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index .git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
fatal: unable to read tree cc90183a1571664f80712c0376f59afeb681303f我已经搜索了谷歌关于这个问题,在StackOverlow上也有关于这个问题的另一个问题,但它仍然没有回答(this question)。有没有人能阐明这个问题?谢谢
发布于 2012-07-22 15:13:27
(不是一个完整的答案,但至少有一些线索和变通方法)
该错误消息来自sha1_file.c, method check_packed_git_idx(),
nr = 0;
index = idx_map;
if (version > 1)
index += 2; /* skip index header */
for (i = 0; i < 256; i++) {
uint32_t n = ntohl(index[i]);
if (n < nr) {
munmap(idx_map, idx_size);
return error("non-monotonic index %s", path);
}
nr = n;
}使用ntohl function being
ntohl函数将u_long从
/IP网络顺序转换为主机字节顺序(这在英特尔处理器上是小端字节顺序)。
ntohl函数返回netlong参数中提供的值,但字节顺序颠倒。如果netlong已经按主机字节顺序排列,则此函数将颠倒它。字节顺序是否必须颠倒由应用程序决定。
ntohl函数采用TCP/IP网络字节顺序( AF_INET或AF_INET6地址族)的32位数字,并返回主机字节顺序的32位数字。
它由以下方式调用:
在SO问题“Is the git binary diff algorithm (delta storage) standardized?”中查看包文件的结构:

第一个也是由builtin/fsck.c调用的,因此您可以尝试使用git fsck --full --progress,以检查您的包文件是否存在本地损坏,或者是否确实存在远程repo问题。
确保您可以在不同的操作系统和/或不同版本的Git上复制该问题。
对于(这里是"Netduino")存储库,通常的变通方法是:
push --force 擦除/重置远程历史记录
发布于 2015-06-08 17:40:06
我在这种非单调错误中搜索信息,找到了这个链接:http://git.661346.n2.nabble.com/Error-non-monotonic-index-after-failed-recursive-quot-sed-quot-command-td7575014.html
TL;DR:删除非单调索引,然后重新索引它。在Linux中,它将是:
> rm .git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx
> git index-pack .git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.pack 在这之后,我不得不运行一些git gc --prune=now和git remote prune origin,但我之前做过一些其他操作,所以我可能破坏了我的repo。
https://stackoverflow.com/questions/11597738
复制相似问题