git update-index --assume-unchanged <filename>
を返しますfatal: Unable to mark file <filename>
。
これを修正するには何をする必要がありますか?何について不平を言っているのですか、そしてその理由は何ですか?
.git/info/exclude
ではなく、リポジトリに追加されています.gitignore
か?
いずれかの答えが「はい」の場合、ファイルはリポジトリになく、これがエラーの原因です。
git ls-files -o
ファイルがあるかどうか試してみてください。そうであってはなりません。
実行git update-index --assume-unchanged
中のファイルはリポジトリにチェックインされているが、ローカル編集を無視したいためです。
ペドロが指摘しているように、エラーを引き起こしているファイルはリポジトリにチェックインされていません。(追跡されgit ls-files -o
ていないという意味で表示されます。)
これは、次のようにディレクトリ全体を再帰的に無視しようとしているために発生する可能性があります。
find ./folder/ -type f | xargs git update-index --assume-unchanged
しかし、そのフォルダー内のファイルが変更されただけでなく、新しいファイルが作成されました。(たとえば、ビルド スクリプトによって。)
変更されたすべてのファイルを無視することが確実な場合は、次のコマンドを使用して実行できます。
git ls-files -m | xargs git update-index --assume-unchanged
しかし、気をつけてください。いじることは苦痛になる可能性があることに注意してください。--assume-unchanged
これらのファイルがレポにある必要がまったくないように、作業をやり直すことを検討してください。次に、それらをリポジトリに追加したり.gitignore
、リポジトリから削除したりできますgit rm --cached
。
リポジトリとユーザーの作業ディレクトリの両方にファイルを入れないようにできれば、それが理想的かもしれません。たとえば、ファイルがビルドの一部として作成される場合、各開発者がローカルでビルド プロセスを実行する代わりに、静的ライブラリを作成できます。