6

git pullあるプルから次のプルへ、サーバー上のすべてが次のようになります。

$ git pull
remote: Counting objects: 53, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 32 (delta 19), reused 0 (delta 0)
Unpacking objects: 100% (32/32), done.
error: unable to find 71682baccff823caa21420b16dd231c6b9c1b133
fatal: object 71682baccff823caa21420b16dd231c6b9c1b133 not found

と同じgit fetchです。ファイルをサーバーにコピーすることで、これを1回のプルで解決できまし.git/object/71/682baccff823caa21420b16dd231c6b9c1b133たが、さらにプルした後も、ブランチに最新のコミットオブジェクトがあるたびに、エラーが発生していました。

これはどのように起こりますか?そして、どうすればそれを永久に修正できますか?

git cloneこのリポジトリは実行中のサーバープロジェクト上にあり、git制御なしでより多くのファイルがあるため、完全なソリューションは適切なソリューションではありません。

新しいディレクトリに移動してから、そのディレクトリを古いフォルダにcloneコピーすることはできますか?.gitまたは、ディレクトリに触れずに他の解決策はありますか?

4

3 に答える 3

1

私は問題を解決することができます

  1. フェッチしてみてください(エラーあり)
  2. 上記のようにオブジェクトファイルをコピーします
  3. git merge欠落しているオブジェクトファイルのコミットで。

これで解決したように見えますが、エラーは再び表示されません。

于 2013-03-24T10:09:24.660 に答える
1

まだ修正する時間がないため、gitリポジトリが破損している開発チームを実行しています。私は、ボールを動かし続ける多くのことを発見しました。それは助けになるかもしれません。

まず、[gc] auto = 0の単一のマシンを用意し、リポジトリ全体をオブジェクトに解凍します

第二に、git 1.8は1.7よりも問題をうまく処理しているように見えるので、ソースを含むファイルシステムにアクセスできるgit1.8を備えたマシンを用意してください。

第三に、常に1.8マシンからgit fetchを実行し、次に1.7マシンからgitpullを実行します。

第4に、1.8でもgit pullできない場合は、git fsck | grep missingを実行し、解凍されたリポジトリから破損したリポジトリのオブジェクトストアにオブジェクトを手動でコピーする必要があります(欠落している0c0ef24...はobjects/0c/にあります0ef24 ...)

なぜgitfetch/ pullがこれらがローカルgitから欠落していることを認識せず、元の場所から取得するのかは私には謎ですが、手動でフェッチを実行するとgitが再び幸せになるようです。gitリポジトリを手動で修正したら、git gcを実行します(ただし、解凍されたマシンではなく、手動で修正する前に不足しているオブジェクトを見つける必要があります。これは面倒です)。

本当に便利なのは、特定のオブジェクトを元の場所から取得するようにgitに指示するコマンドですが、質問されることなく実行した方がよいと思います:-)

お役に立てば幸いです。

于 2013-04-22T13:46:17.073 に答える
0

今日、git1.7.1でcentos6ボックスからgitpullを実行しようとしたときに、この問題が発生しました。gitクライアントをrpmforge-extrasから1.7.11にアップグレードした後、問題は解決しました。

于 2013-05-30T08:32:34.917 に答える