回答:
特定のリポジトリに固有であるが、他の関連リポジトリと共有する必要がないパターン(たとえば、リポジトリ内に存在するが、1人のユーザーのワークフローに固有である補助ファイル)は、
$GIT_DIR/info/exclude
ファイルに入れる必要があります。
.git/info/exclude
ファイルは任意のと同じ形式がある.gitignore
ファイルを。別のオプションは、core.excludesFile
グローバルパターンを含むファイルの名前に設定することです。
すでにステージングされていない変更がある場合は、ignore-patternsを編集した後、次を実行する必要があります。
git update-index --assume-unchanged <file-list>
注$GIT_DIR
:これは、gitマニュアル全体で使用されている表記で、単にgitリポジトリへのパスを示しています。環境変数が設定されている場合は、現在のリポジトリの場所をオーバーライドします。これは、おそらく望んでいる場所ではありません。
編集:別の方法は、使用することです:
git update-index --skip-worktree <file-list>
それを逆にします:
git update-index --no-skip-worktree <file-list>
skip-worktree
おそらくが優先されassume-unchanged
ます。
更新:git update-index --skip-worktree [<file>...]
代わりに使用を検討してください、@ danShumwayに感謝!2つのオプションの違いに関するBorealidの説明を参照してください。
古い答え:
追跡されたファイルへのローカルの変更を無視する必要がある場合(設定ファイルへのローカルの変更を含む)、を使用しますgit update-index --assume-unchanged [<file>...]
。
git update-index --assume-unchanged my-file.php
それを無視して無視されるように実行する必要がありました。先端をありがとう!
git update-index --no-assume-unchanged my-file.php
.git/info/exclude
あなたは(多くの場合、共有、追跡.gitignoreを汚染を避けるために)何をしたいです
--assume-unchanged
あなたのアップデートを読む前に急いで行きました。私は元に戻しましたが--no-assume-unchanged
、それから--skip-worktree
...をクリアしましたか?
.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
これが1つのツリーに固有の場合は、ファイルに除外を配置します。git config --global core.excludesfile ~/.gitignore
して、パターンをに追加します~/.gitignore
。このオプションは、すべてのツリーで特定のパターンを無視する場合に適用されます。たとえば、これをファイル.pyc
や.pyo
ファイルに使用します。また、該当する場合は、ファイルを明示的に列挙せず、パターンを使用していることを確認してください。
git config --global
オプションをグローバルに設定する必要があると思います。
私はあなたが探していると思います:
git update-index --skip-worktree FILENAME
ローカルで行われた変更を無視します
ここだhttp://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/これらのソリューションの詳細については説明が!
使用を元に戻すには:
git update-index --no-skip-worktree FILENAME
--skipworktree
後で気が変わって、ファイルの追跡を再開したいですか?
git update-index --no-skip-worktree <file>
このプロセスを簡単にするために、いくつかの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
私はファットマンの答えを参照してこれらを作成しました — --assume-unchanged
同じバージョンを提示しています。
私が提示するバージョンは--skip-worktree
、ローカルの変更を無視するために使用します。違いの詳細については、Borealidの回答を参照してください。ただし、本質的に--skip-worktree
は、開発者が変更をコミットするリスクなしにファイルを変更することを目的としています。
git ignored
ここで紹介するコマンドは、使用していますgit ls-files -v
、そして始まるちょうどこれらのエントリを示すために、リストをフィルタリングS
タグを。S
タグは、その状態で「worktreeをスキップ」ファイルを表しています。によって表示されるファイルステータスの完全なリストについてはgit ls-files
、-t
オプションのドキュメントを参照してくださいgit ls-files
。
'!git ls-files -v | grep "^S"'
?コマンドはそこにあると動作しません。削除すると正常に動作するようです。
Expansion of alias 'ignored' failed; 'git' is not a git command
git git ls-files …
git ignore <filename>
そのディレクトリにのみ適用されます。そして、最終的にそのファイルに変更を加えてコミットしてリモートにプッシュしたい場合は、便利な機能git unignore <filename>
を使用して一時的に再び追跡を開始します!ありがとう!
あなたは、単につまり、自分のホームディレクトリに.gitignoreファイルを追加することができます$HOME/.gitignore
か~/.gitignore
。次に、次のコマンドでそのファイルを使用するようにgitに指示します。
git config --global core.excludesfile ~/.gitignore
これは、無視するものを決定するときにgitが参照する通常の.gitignoreファイルです。これはホームディレクトリにあるため、自分だけに適用され、プロジェクトの.gitignoreファイルを汚染することはありません。
私はこのアプローチを何年も使用してきましたが、すばらしい結果が得られました。
git check-ignore <file-name>
確認に使用してください。LMKが機能する場合
=
:git config --global core.excludesfile ~/.gitignore
.gitignore
ホームディレクトリの下にファイルを置き、代わりにそのファイルを使用するようにgitに指示してから、ローカルで追跡を解除するファイルを削除しました。ただし、変更をプッシュした後、リモートリポジトリもそれらのファイルを削除しました。私は何か間違ったことをしましたか?
.gitignore
ローカルディレクトリに存在するファイルを無視することです。あなたがしなければならないことはgit rm --cached
、それらをリポジトリから削除しますが、ローカルに残します。git reset --soft HEAD^
そのコミットを元に戻し、ファイルを回復するようなもので、以前のコミットに戻ることができるはずです。それがgitの美点です。gitの履歴にはすべて残っています。
追跡されていない(数個の)フォルダーにある場合に特に追跡されていないファイルを無視するには、すべての追跡され.gitignore
ていないフォルダーにファイルを追加し、を含む1行に*
続けて新しい行を入力するのが簡単な解決策です。追跡されていないファイルがいくつかのフォルダーにある場合、これは本当にシンプルで簡単なソリューションです。私にとって、すべてのファイルは単一の追跡されていないフォルダーvendor
からのものであり、上記はうまくいきました。
リポジトリに.gitignoreファイルがまだない場合、簡単な解決策は.gitignoreファイルを作成し、その中に.gitignore
無視するファイルのリストに追加することです。
.gitignore
の上部に共有ファイルがあります。しかし、私のダーティーファイルは深いフォルダーにあるので、その.gitignore
横に自分のダーティファイルを追加しました。+1
git update-index --assume-unchanged [<file>...]
、excludeファイルに追加を行った後に実行してください。それまで変更は反映されません。