git 1.7.12
特定のディレクトリの下にあるすべてのファイルを、変更されていないものとしてマークします。
1)git update-index --assume-unchaged dir/
は「Ignoring path」を提供します。
2)git update-index --assume-unchaged dir/*
は、追跡されていないファイルに遭遇するため、すぐに失敗します。したがって、「致命的:ファイルをマークできません」と表示され、終了します。
3)マークするファイルのリストを生成してみてください。 cd
を目的のディレクトリに配置し、git ls-files | tr '\n' ' ' | git update-index --assume-unchanged
を実行します。これはエラーメッセージを生成しませんが、ファイルを正常にマークしません。コマンドの最初の部分git ls-files | tr '\n' ' '
は、マークするすべてのファイルのスペース区切りリストを正しく生成します。そのコマンドの出力をコピーしてコマンドラインに貼り付けると、git update-index
コマンドが機能します。パイプで動作しないものは何ですか?
いいえ、dir
を.gitignoreに追加するだけでは不十分です。これらのファイルはリポジトリにある必要がありますが、ユーザーがプルできるように無視する必要がある望ましくない変更がローカルで行われます。
git update-index
は、標準入力ではなく、コマンドラインでファイル名を必要とします。
cd
は、変更しないと仮定したいフォルダーに入れます
次のいずれかを実行できます。
git update-index --assume-unchanged $(git ls-files | tr '\n' ' ')
または
git ls-files | tr '\n' ' ' | xargs git update-index --assume-unchanged
ただし、どちらの場合でも、スペースを含むファイル名には問題があります。それらがある場合、これを使用できます:
git ls-files -z | xargs -0 git update-index --assume-unchanged
編集:git ls-files -z
に関する@MatthewScharleyからの入力を組み込みました。
注: Windowsを使用している場合は、Git Bashを使用してこれらのコマンドを実行します
.git/info/exclude
にディレクトリ名を追加します。これは、追跡されていないファイルに対して機能します。
うん、
git update-index --assume-unchanged
ディレクトリではなくファイルのみで動作します。私は、より速い方法の1つだと思う:
cd dir
ls | xargs -l git update-index --assume-unchanged