他の人のためにグローバルなgit設定を汚染することなくローカルでファイルを無視できますか?私のgitステータスでスパムである未追跡ファイルを持っていますが、私のローカルブランチにある小さなランダムな未追跡ファイルごとにgit configの変更をコミットしたくありません。
関連するGitドキュメント から:
特定のリポジトリに固有であるが、他の関連リポジトリと共有する必要のないパターン(たとえば、リポジトリ内に存在するが、1人のユーザーのワークフローに固有の補助ファイル)は、
$GIT_DIR/info/exclude
ファイルに入れる必要があります。
.git/info/exclude
ファイルの形式は、.gitignore
ファイルと同じです。別のオプションは、core.excludesFile
をグローバルパターンを含むファイルの名前に設定することです。
ステージングされていない変更が既にある場合は、ignore-patternsを編集した後に次を実行する必要があります。
git update-index --assume-unchanged [<file>...]
$GIT_DIR
に関する注意:これは、 全体 gitリポジトリへのパスを示すためのgitマニュアルの表記です。環境変数が設定されている場合は、現在のリポジトリの場所が上書きされますが、これはおそらく望んでいないものです。
更新 :代わりにgit update-index --skip-worktree [<file>...]
の使用を検討してください。ありがとう@danShumway! 2つのオプションの違いについての Borealidの説明を参照してください 。
古い答え:
あなたが追跡しているファイルへのローカルの変更を無視する必要があるなら(私たちは設定ファイルへのローカルの修正でそれを持っています)、git update-index --assume-unchanged [<file>...]
を使います。
.gitconfigファイルの[alias]セクションに次の行を追加します。
ignore = update-index --assume-unchanged
unignore = update-index --no-assume-unchanged
ignored = !git ls-files -v | grep "^[[:lower:]]"
これで、git ignore my_file
を使用してローカルファイルへの変更を無視し、git unignore my_file
を使用して変更を無視しないようにすることができます。 git ignored
は無視されたファイルをリストします。
この答えは http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html から集められました。
いくつかの選択肢があります。
.gitignore
ファイルを作業ディレクトリに残します(または topgit またはその他のそのようなパッチツールを使用して自動的に適用します)。$GIT_DIR/info/exclude
ファイルに入れます。git config --global core.excludesfile ~/.gitignore
を実行して、~/.gitignore
にパターンを追加してください。このオプションは、 all ツリーにまたがる特定のパターンを無視したい場合に適用されます。私はこれを例えば.pyc
と.pyo
ファイルに使います。また、該当する場合は、パターンを使用していて、ファイルを明示的に列挙していないことを確認してください。
私はあなたが探していると思います:
git update-index --skip-worktree FILENAME
ローカルに加えられた変更を無視します
これが http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ /これらの解決策についての詳細な説明です!
このプロセスを簡単にするために、 gitエイリアス をインストールすることができます。これはあなたの[alias]
ファイルの.gitconfig
ノードを編集します。
git config --global alias.ignore 'update-index --skip-worktree'
git config --global alias.unignore 'update-index --no-skip-worktree'
git config --global alias.ignored '!git ls-files -v | grep "^S"'
これによりインストールされるショートカットは次のとおりです。
git ignore config.xml
config.xml
の変更を見ないとふりをします - 誤ってそれらの変更をコミットするのを防ぎます。git unignore config.xml
config.xml
へのあなたの変更の承認を再開します - あなたがそれらの変更を再びコミットすることを可能にします。git ignored
私は phatmannの答え - を参照してこれらを作成しました。これは同じバージョンの--assume-unchanged
バージョンを表しています。
私が提示するバージョンは、ローカルの変更を無視するために--skip-worktree
を使います。違いについての完全な説明は Borealidの答え を参照してください、しかし本質的に--skip-worktree
の目的は開発者が変更をコミットする危険なしにファイルを変更するためです。
ここに示されているgit ignored
コマンドはgit ls-files -v
を使用して、リストをフィルター処理してS
タグで始まるエントリーだけを表示します。 S
タグは、ステータスが "skip worktree"であるファイルを示します。 git ls-files
で示されるファイルステータスの完全なリストについては、 -t
のgit ls-files
オプションに関するドキュメントを参照してください。
ホームディレクトリに.gitignoreファイル、つまり$HOME/.gitignore
または~/.gitignore
を追加するだけです。それからgitにそのファイルを使うように指示します。
git config --global core.excludesfile ~/.gitignore
これは無視するものを決めるときにgitが参照する通常の.gitignoreファイルです。ホームディレクトリにあるので、それはあなただけに適用され、プロジェクトの.gitignoreファイルを汚染することはありません。
私は何年もこの方法を使って素晴らしい結果を得てきました。
レポジトリに.gitignoreファイルがまだない場合は、.gitignoreファイルを作成し、無視するファイルのリストに.gitignore
を追加するという簡単な解決策があります。