web-dev-qa-db-ja.com

Git「致命的:新しいインデックスファイルを書き込めません」

私はこれについて他のスレッドの多くを見てきましたが、彼らは助けにはなりません。

非常に単純なレポジトリ-2つのJavaScriptファイルがあります。 Macbookに100 GB以上あります。ファイルをサブディレクトリに移動して、ローカルでステージングしようとすると、取得した変更が...

致命的:新しいインデックスファイルを書き込めません

これは、端末ですべてのアクションを実行する場合でも、SourceTreeのようなGUIを使用する場合でも発生します。さらに、ファイルの1つがロックされ、ログオフして再度ログインするまで作業ディレクトリを削除できません。

なぜこうなった?ロックはステージングを妨げていますか?その場合、OS Xで問題ファイルのロックを解除する方法は何ですか?まだリモートにプッシュしていませんが、それが違いを生む場合、リモートリポジトリはGoogle Codeです。すべてがローカルです。

96
Jeff

私の場合、ディスクの空き容量がなくなったため、空き容量を確保するためにハードドライブからファイルを削除する必要がありました。

154
Alexander Bird

私はこの数日間、同じ問題を抱えています。基本的に、私の知らないうちにリポジトリ全体が新しいファイルシステムに移動され、git statusを実行しようとすると、リポジトリ内のすべてのファイルが更新されたことが突然報告されました。

可能な解決策

だから、多くのグーグル精練の後、私は次のことを試しました:

  • .git permssionsの変更(同じ問題)
  • .git/indexパーミッションの変更(同じ問題)
  • git add-ingすべての変更をコミットする(同じ問題)
  • git rm-ingは削除されたファイルです。ファイル名が長すぎるエラーを報告していたためです(同じ問題)。
  • git reset(soft | Head | Hard)(同じ問題)
  • git clean(同じ問題)
  • windows Defenderをオフにする(同じ問題)
  • gitの更新(同じ問題)
  • 異なるgitクライアント(私はgitbashを使用)(同じ問題)
  • 1杯ではなく2杯のコーヒーを飲む(同じ問題)

tl:dr-ダーティソリューション

問題を解決できたのは、インデックスファイルをコピーし、元のファイルを削除して、コピーの名前を変更することだけでした。

私はそれが本当に「解決策」ではないことを知っていますが、今ではすべてのファイル/ブランチがそのままで、魔法のように動作します> <。誰かがこれがうまくいく理由を知っているなら、教えてください。

57
theatlasroom

Macでも同じ問題が発生しました。ファイルシステムACLが原因のようです。 chmod -RN /path/to/repoを試して、ACLをクリアします。これを行った後、変更をコミットすることができました。トリックファイルを使用してインデックスファイルをコピーし、元のファイルを削除してコピーを戻すと、同じ結果が得られました。

15
user2465454

GoogleドライブやDropboxなどのオンライン同期サービスでGitHubをセットアップしている場合、GitHubが同じことをしようとしているため同期サービスがファイルの読み取り/書き込みを試みるため、同期を無効にしてみてください。正しく。

14
Cornchip

私の場合、Dropboxの同期を一時停止すると問題が解決しました

11
tonymayoral

ファイル.git/indexが別のプロセス(私のローカル開発Webサーバー)によって使用されていることが偶然に起こりました。私はプロセスをシャットダウンし、それが機能しました。

7
gls123

これは私のために働いた:

rm -f ./.git/index.lock
6
ForTheWin

私の場合、解決策は新しいユーザーに許可を追加するだけでした。

新しいOSをインストールしてリポジトリを移動すると、この正確なエラーが表示されていました。ルートフォルダーを選択し、認証済みのユーザーを追加してすべてをチェックしました enter image description here

4

.gitフォルダー内のすべてのファイルにACL(何らかの方法で)を添付しました。

.gitフォルダーのls -leで確認してください。

chmod -N(フォルダー/ファイルの場合)またはchmod -RN(再帰)を使用してACLを削除できます。

3
Tim

Googleバックアップや同期などのバックグラウンドバックアップソリューションは、インデックスファイルへのアクセスをブロックすると考えています。アプリケーションを閉じましたが、Sourcetreeにはまったく問題がありませんでした。 Dropboxは同じことをしているようです(@tonymayoral)。

3
J-Schaefer

Visual Studio Codeを閉じると(私の場合、ファイル保存で自動アップローダーバックグラウンドジョブが実行されます)、問題は解決しました。

ソリューションの功績は、私の友人であり同僚のアーネルです。

2
Spyryto

私の場合、それは同時実行EGitでした。 Eclipseを再起動すると、通常どおりに動作します。

2
Phil R.

Windowsボックスを使用している場合は、ソースツリーまたはgitターミナルに関係なく、使用しているプログラムが管理者として実行されていることを確認してください。同じエラーメッセージが表示されました。プログラムを右クリックして管理者として実行するか、そのプロパティを変更して常に管理者として実行することができます。

2
wonster

同じ問題がありました。コンピューターを再起動し、問題は解決しました。

1
Enayat

この問題は、プロセスによってロックされた.git\indexが原因である可能性があります。

リンク Windowsでファイルまたはフォルダーをロックしているプロセスを見つける は、ロックされたファイルを見つけるための次のアプローチを指定します。

SysInternals Process Explorer-[検索]> [ハンドルまたはDLLの検索]に移動します。 [ハンドルまたはDLL部分文字列:]テキストボックスに、ファイルへのパス(例: "C:\ path\to\file.txt")を入力し、[検索]をクリックします。そのファイルへのオープンハンドルを持つすべてのプロセスがリストされます。

上記のアプローチを使用して、どのプロセスがロックされているか.git\indexを見つけてから、ロック実行可能ファイルを停止します。これで問題が解決するはずです。

たとえば、 Process Explorer Search は、.git\indexvmware-vmx.exeによってロックされたことを示します。 VMWare Player仮想マシン(共有フォルダー経由でgitリポジトリにアクセスした)を一時停止すると、問題が解決しました。

1
Fan

「git add」を試しましたか? 。すべての変更はありますか? (git reset HEADで不要な追加ファイルを削除できます)

1
User123456

十分なスペースがないことが問題です。クリーンアップして再試行

1
Vijay S B

問題:gitで変更されたファイルをチェックアウトすると、このエラーが発生しました。 ABCとXYZの2人のユーザーがいました。ファイルにはABCのuid:gidがありますが、gitアクセスがなく、同じファイルをチェックアウトしようとしています。

私が試した解決策:XYZはgitアクセスを持ち、ファイルをSudoでチェックアウトしてみましたが、うまくいきました。

0
Dilip Kumar K

WindowsでGitExtensionsを使用すると、この問題が発生しました。リポジトリを含むフォルダーの現在のユーザー(私)に完全な許可を付与することで修正されました。

また、Git Extensionsからエラーが発生していても、Visual Studio 2015から同じファイルをコミットできました。

もう一度、.gitフォルダーから「インデックス」ファイルを削除する必要がありました

0
Rob Bowman

リベース中にこれを取得した場合:

これは、バックアップソフトウェア、ウイルス対策、IDE、その他のgitクライアントなど、リポジトリのインデックスファイルをロックしているソフトウェアが原因である可能性が最も高いです。

ほとんどの場合、ロックはほんの短い時間であるため、タイミングが悪く、運が悪い場合にのみ発生します。

ただし、git rebase --continueは、次のコマンドが空のコミットであることについて文句を言います。

The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:

    git commit --allow-empty

これを修正するには、git resetを実行してgit rebase --continueをもう一度試してください。

0
qwertzguy

ここに私のために働いたものがあります:

コンテキスト:

  1. サーバー上でプロジェクトを構築する

  2. git statusHEAD detached at <commit-SHA>を返します

  3. ローカルで行った操作で、このエラーが発生しました。すなわち:

    • git checkout
    • git reset HEAD --hard

ソリューション

  1. 単にファイル<work-dir>/.git/indexを削除しました。
  2. git statusは、プロジェクト内のすべてのファイルが追跡されないことを示します(ここでは驚くことではありません)。
  3. git reset HEAD --hard
  4. HEAD detached at <commit-SHA>を実行するときにgit statusに戻りますが、次のことができるはずです。
  5. git checkout <some-branch>

そして、あなたは軌道に乗っています!

!!重要!!

これが機能するのは、私が「本当に」構築しているからです。コードに重要な変更は行われていません。実際に「開発時間」にいる場合は、まず作業内容を保存するか、別の方法に進むことをお勧めします。

それが役立つことを願っています:)。

0
avi.elkharrat

私の場合は少し興味深いです:

Git logを実行して特定のコミットを確認しましたが、適切に終了しなかったため、ctrl + cを押して終了します。

その後、インデックスはロックされているようです。そこで、もう一度git logを実行し、Qを押して終了します。

問題が修正されました。 :)

0
Jim Yu