1610

他の全員のグローバル git 構成を汚染することなく、ファイルをローカルで無視できますか? 私のgitステータスにはスパムである追跡されていないファイルがありますが、ローカルブランチにある小さなランダムな追跡されていないファイルごとにgit構成の変更をコミットしたくありません。

4

13 に答える 13

2224

関連する Git ドキュメントから:

特定のリポジトリに固有であるが、他の関連するリポジトリと共有する必要のないパターン (たとえば、リポジトリ内にあるが、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>
于 2009-11-18T01:38:18.813 に答える
462

更新:git update-index --skip-worktree [<file>...]代わりに使用を検討してください。@danShumway に感謝します! 2 つのオプションの違いについては、Borealid の説明を参照してください。


古い答え:

追跡されたファイルへのローカルの変更を無視する必要がある場合 (構成ファイルへのローカルの変更がある場合)、 を使用しますgit update-index --assume-unchanged [<file>...]

于 2013-01-22T15:39:00.423 に答える
192

.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から収集されました。

于 2013-08-19T15:21:38.763 に答える
131

いくつかのオプションがあります:

  • ダーティ (またはコミットされていない).gitignoreファイルを作業ディレクトリに残します (または、topgitなどのパッチ ツールを使用して自動的に適用します)。
  • $GIT_DIR/info/excludeこれが 1 つのツリーに固有のものである場合は、除外をファイルに入れます。
  • パターンを実行git config --global core.excludesfile ~/.gitignoreして に追加します~/.gitignoreこのオプションは、すべてのツリーで特定のパターンを無視する場合に適用されます。たとえば、これを.pycおよびファイルに使用します。.pyo

また、該当する場合は、パターンを使用していて、ファイルを明示的に列挙していないことを確認してください。

于 2009-11-18T01:45:29.127 に答える
86

私はあなたが探していると思います:

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
于 2015-07-11T06:38:49.057 に答える
53

このプロセスを簡単にするために、いくつかの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 unignore config.xml
    • git は変更の確認を再開し、config.xmlそれらの変更を再度コミットできるようにします。
  • git ignored
    • git は、上記の方法で「無視」しているすべてのファイルを一覧表示します。

私はファットマンの答えを参照してこれらを構築しました— これは--assume-unchanged同じバージョンを提示します.

私が提示するバージョンは--skip-worktree、ローカルの変更を無視するために使用します。違いの完全な説明については、Borealid の回答を参照してください。ただし、基本的に--skip-worktree、開発者が変更をコミットするリスクなしにファイルを変更することを目的としています。

ここに示すgit ignoredコマンドは を使用し、リストをフィルタリングして、タグgit ls-files -vで始まるエントリだけを表示します。Sタグは、Sステータスが「ワークツリーをスキップ」であるファイルを示します。で表示されるファイル ステータスの完全なリストについては、オプション ongit ls-filesのドキュメントを参照してください。-tgit ls-files

于 2016-08-22T18:27:16.043 に答える
21

これは、ローカル除外ファイルに行を追加する簡単な解決策の一種です。

 echo YOURFILE_OR_DIRECTOY >> .git/info/exclude 
于 2020-09-28T15:19:27.763 に答える