他の全員のグローバル git 構成を汚染することなく、ファイルをローカルで無視できますか? 私のgitステータスにはスパムである追跡されていないファイルがありますが、ローカルブランチにある小さなランダムな追跡されていないファイルごとにgit構成の変更をコミットしたくありません。
13 に答える
特定のリポジトリに固有であるが、他の関連するリポジトリと共有する必要のないパターン (たとえば、リポジトリ内にあるが、1 人のユーザーのワークフローに固有の補助ファイル) は、
$GIT_DIR/info/exclude
ファイルに入れる必要があります。
.git/info/exclude
ファイルの形式は、他の.gitignore
ファイルと同じです。もう 1 つのオプションは、core.excludesFile
グローバル パターンを含むファイルの名前に設定することです。
すでにステージングされていない変更がある場合は、無視パターンを編集した後に次を実行する必要があることに注意してください。
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>
更新: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
これが 1 つのツリーに固有のものである場合は、除外をファイルに入れます。- パターンを実行
git config --global core.excludesfile ~/.gitignore
して に追加します~/.gitignore
。このオプションは、すべてのツリーで特定のパターンを無視する場合に適用されます。たとえば、これを.pyc
およびファイルに使用します。.pyo
また、該当する場合は、パターンを使用していて、ファイルを明示的に列挙していないことを確認してください。
私はあなたが探していると思います:
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
このプロセスを簡単にするために、いくつかの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
- git は何も変更されていないふりをして
config.xml
、誤ってそれらの変更をコミットするのを防ぎます。
- git は何も変更されていないふりをして
git unignore config.xml
- git は変更の確認を再開し、
config.xml
それらの変更を再度コミットできるようにします。
- git は変更の確認を再開し、
git ignored
- git は、上記の方法で「無視」しているすべてのファイルを一覧表示します。
私はファットマンの答えを参照してこれらを構築しました— これは--assume-unchanged
同じバージョンを提示します.
私が提示するバージョンは--skip-worktree
、ローカルの変更を無視するために使用します。違いの完全な説明については、Borealid の回答を参照してください。ただし、基本的に--skip-worktree
は、開発者が変更をコミットするリスクなしにファイルを変更することを目的としています。
ここに示すgit ignored
コマンドは を使用し、リストをフィルタリングして、タグgit ls-files -v
で始まるエントリだけを表示します。S
タグは、S
ステータスが「ワークツリーをスキップ」であるファイルを示します。で表示されるファイル ステータスの完全なリストについては、オプション ongit ls-files
のドキュメントを参照してください。-t
git ls-files
これは、ローカル除外ファイルに行を追加する簡単な解決策の一種です。
echo YOURFILE_OR_DIRECTOY >> .git/info/exclude