をめぐる対立を解決する"エラー:悪指数–死亡:インデックスファイルの腐敗をお使いの場合はGit

StackOverflow https://stackoverflow.com/questions/1115854

  •  12-09-2019
  •  | 
  •  

質問

git init, しているものであり、発表というとする取組方針当社グループ数のファイル、変更、追加、為です。のgitデーモン(動でCygwinにWinXP)クローニングのリポジトリです。現在、このエラーをクローニングのリポジトリ:

$ git status
error: bad index file sha1 signature
fatal: index file corrupt

がこの問題を修正するには以降の新しいコピーのリポジトリとは?

役に立ちましたか?

解決

問題は、コミットのためのステージングエリアの(すなわち.git/index)として指数である場合は、

、あなたは単純に(あなたがしたい場合、バックアップコピーを作成する)インデックスを削除し、その後のバージョンにインデックスを復元することができます最後にコミットします:

OSX / Linuxの場合:

rm -f .git/index
git reset

Windowsの場合:

del .git\index
git reset

(上記resetコマンドはgit reset --mixed HEADと同じである)

あなたは、代わりの代わりにgit read-treegit reset低いレベルの配管を使用することができます。

<時間>

問題はパックファイルの<ためのインデックスである場合/ strong>を、あなたはgit index-packを使用して、それを回復することができます。

他のヒント

あなたは誤って、プロジェクトのルート上のsed(?おそらく、リファクタリング)のようなものを持つ.git /インデックスファイルが破損した可能性があります:

sed -ri -e "s/$SEACHPATTERN/$REPLACEMENTTEXT/g" $(grep -Elr "$SEARCHPATERN" "$PROJECTROOT")

ちょうどあなたのgrep / sedのでバイナリファイルを無視し、将来的にこの問題を回避するには

sed -ri -e "s/$SEACHPATTERN/$REPLACEMENTTEXT/g" $(grep -Elr --binary-files=without-match "$SEARCHPATERN" "$PROJECTROOT")

これは悪いクローンのように聞こえます。あなたが取得するために以下のことを試みることができるより多くの情報を(おそらく?):

git fsck --full

私はこの問題のようにしていtiで固定します:

rm -f .git/index
git reset

されていたものではなかった。 の溶液?何らかの理由かったです。gitのフォルダにサブディレクトリが入っています。を削除します。gitのフォルダは、元本) git reset ます。一度削除されたった。

これは私のために働きました。私はその理由の好奇心が強いが、私は最初の場所でエラーが発生して開始しました。私は昨日ログアウトした場合、それは大丈夫でした。今朝にログインし、そうではありませんでした。

rm .git/index

git reset

以降、解っていたのが引き続き問題は、この退屈解

  1. クローンの新しいコピーのレポ他
  2. コピーします。gitディレクトリへの飛レポ-レートが含まれている変化したかったコミット

かったですよね。ちなみに、思い切って sed プロジェクトのルートとして@推測の空港を表示一部の空港を表.たレッスンです。

gitのサブモジュールのユーザーへの注意 - - であるとして、ここでの解決策は、あなたのために動作しません。

あなたは、たとえば、devと呼ばれる親リポジトリがあるとしましょう、と自分のサブモジュールのリポジトリがapi呼ばれます。

あなたはapiの内部にあり、あなたはこの質問に記載されたエラーを取得する場合:

error: bad index file sha1 signature fatal: index file corrupt

indexファイルが.gitフォルダの中にされることはありません。実際には、.gitでもフォルダではありません - それは、このリポジトリのための本当の.gitデータの場所にテキストドキュメントになります。このような可能性が何かます:

~/dev/api $ cat .git gitdir: ../.git/modules/api

だから、代わりにrm -f .git/indexの、あなたがこれを行う必要があります:

rm -f ../.git/modules/api/index git reset

または、より一般的には、

rm -f ../.git/modules/INSERT_YOUR_REPO_NAME_HERE/index git reset

サブディレクトリの下に1 .gitディレクトリがある場合には、

この問題が発生する可能性があります。他の.gitディレクトリがあるかどうかを確認し、それらを削除し、もう一度試して、それを修正するには。

私は.git /インデックス、その後、私のためにGitのリセット作業中にインデックスファイルの名前を変更し、同じ問題に直面していた。

これはばかげているが、私はちょうど私のマシン(MAC)を再起動していると、それは決して起こらなかったような問題は消えていました。私はサポートの男のような音に嫌い...

(あなたは、WindowsのOSを使用している場合)

また、

ファイルの以前のバージョンに復元するために試すことができます
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top