4

我大约每小时一次收到此消息:

错误:坏索引文件 sha1 签名致命:索引文件损坏

我已经在网上查看并知道如何解决它,但试图找出导致它的原因。

我在服务器上使用命令行工具,但在我的本地计算机上安装了目录(通过 sshfs)。但我不使用本地 git,只使用远程服务器上的版本。

我能想到的唯一另一件事是 IntelliJ,但我停止使用 git 命令,认为它导致了冲突。

有没有人知道问题可能是什么?

4

3 回答 3

2

我不使用本地 git,只使用远程服务器上的版本。

我打赌你的问题就在那里。

在你的仓库中做你的工作。当您的作品以适合发布的形式发布时,推送到服务器存储库。如果你想分享你正在进行的工作,请参见团队成员本地存储库之间的 Git 推送/拉取

(编辑:您正在使用sshfs。不要为任何最少的多用户执行此操作。它是 . 的单用户便利FUSE前端sftp。即使您关闭它的缓存仍然不会结束比赛。)

于 2013-09-06T16:01:49.710 回答
2

如果您将 git 安装在远程服务器位置,该位置也用作 IntelliJ 项目的根目录,那么您将在 git 上发生锁定争用。IntelliJ 将不断损坏您的 git 索引,因为您也可能(例如)在终端会话的命令行中的 repo 中使用 git。

解决方案是取消注册 IntelliJ 软件中的任何版本控制,方法是转到“设置”>“版本控制”并从该列表中删除您的项目。这应该告诉您的 IDE 完全忽略该项目根文件夹中 git 的存在,并永远停止争夺对 git 索引的控制权。

另请参阅此问题:如何在 phpstorm 中禁用版本控制?

于 2015-12-30T17:57:48.530 回答
1

除非您找到直接解析Git 索引文件.git的方法,否则请运行以下命令,从存储库的目录中删除 Git 索引文件并“获取当前分支并将其重置为指向其他位置,并带上索引和工作树沿“(但在此之前,请记住备份您.git/index的以防万一):

$ rm .git/index
$ git reset
于 2013-09-06T14:24:43.760 回答