Gitが特定のディレクトリ/ファイルを見たり追跡したりするのを無視する方法。これを実行するだけです。
git update-index --assume-unchanged <file>
今、あなたはどうやってそれを元に戻すのですか? (それを想定外としましょう。)
想定変更なしに設定されたundo/show dirの/ファイルを取得するには、を実行します。
git update-index --no-assume-unchanged <file>
assume-unchanged
であるdirの/ファイルのリストを取得するには、を実行します。
git ls-files -v|grep '^h'
これがあなたが頻繁に使うコマンドであるなら - あなたはそれのためにエイリアスを持つことを同様に考慮したいかもしれません。あなたのグローバル.gitconfig
に追加:
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
これを.gitconfig
に保存した後は、よりきれいなコマンドを実行することができます。
git hide myfile.ext
または
git unhide myfile.ext
この リソース はとても役に立ちました
git update-index関数にはいくつかのオプションがあり、以下のようにタイプすることができます。
git update-index --help
ここであなたは様々なオプションを見つけるでしょう - どのように関数update-indexで処理するか。
[ファイル名がわからない場合]
git update-index --really-refresh
[あなたがファイル名を知っていれば]
git update-index --no-assume-unchanged <file>
無視リストに追加されたすべてのファイルを元に戻します。
git update-index --assume-unchanged <file>
--assume-unchanged
オプションは見当たらないので、君は--assume-changed
を意味していたと思います。 --assume-unchanged
の逆は--no-assume-unchanged
です。
@adardesign、@adswebwork、および@AnkitVishwakarmaからの優れたオリジナルの回答、および@Bdoserror、@ Retsam、および@seanfからのコメントを、追加のドキュメンテーションリンクおよび簡潔なエイリアスと共に合成する...
基本コマンド
ファイルをリセットする 、つまり assume-changed を通常の状態に戻します。
git update-index --no-assume-unchanged <file>
と仮定して変更されていないすべての ファイルを一覧表示するには、次のようにします。
git ls-files -v | grep '^[a-z]' | cut -c3-
すべての 仮定変更されていないファイルを通常の状態にリセットします。
git update-index --really-refresh
ショートカット
これらの一般的なタスクをgitで実行しやすくするために、あなたのユーザのために.gitconfig
に以下の エイリアス セクションを追加/更新してください(例:* nixまたはmacOSの~/.gitconfig
)システム):
[alias]
hide = update-index --assume-unchanged
unhide = update-index --no-assume-unchanged
unhide-all = update-index --really-refresh
hidden = ! git ls-files -v | grep '^[a-z]' | cut -c3-
適用されたすべてのファイルを元の状態に戻し、キャッシュされた状態だけでなく変更しないと仮定したい場合(gitはそれらを小文字で文字でマークします)、次のコマンドを使用できます。
git ls-files -v | grep '^[a-z]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
git ls-files -v
はすべてのファイルをそのステータスと共に印刷しますgrep '^[a-z]'
はファイルをフィルタリングし、変更なしと仮定するだけを選択しますcut -c 3-
は、ステータスを削除し、パスのみを残し、3文字目から最後までを切り捨てますtr '\012' '\000'
は行末文字(\ 012)をゼロ文字(\ 000)に置き換えますxargs -0 git update-index --no-assume-unchanged
は、すべてのパスをゼロ文字で区切ってgit update-index --no-assume-unchanged
に渡して元に戻します。@adardesign
の答えに追加して、assume-unchanged
リストに追加されたすべてのファイルをno-assume-unchanged
に一度にリセットしたい場合は、次のようにします。
git ls-files -v | grep '^h' | sed 's/^..//' | sed 's/\ /\\ /g' | xargs -I FILE git update-index --no-assume-unchanged FILE || true
これはgrepから出力される2文字、すなわち"h "
を取り除き、ファイル名に含まれている可能性のあるスペースをすべてエスケープし、最後に|| true
はループ内のファイルにエラーがある場合にコマンドが途中で終了するのを防ぎます。
Git Extensions を使用している場合は、以下の手順に従ってください。
これで終わりです。
ここでは説明しません。しかし、私の2セントを追加したいと思います。時々、私はビルドを実行し、それがたくさんのファイルを変更し、それから私が何かに取り組むことを望むので、このコマンドは本当に私に大いに役立ちます。
git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`
他の誰かがそれが同様に役に立つことを願っています。