.gitignoreファイルは、制御したくないファイルの一部を無視するのに非常に役立ちます。残念ながら、ファイルがすでにバージョン管理されている場合は使用できません。たとえば、私の.gitignore(既にgitに追加されている)ファイルは、同僚が望んでいるファイルとは異なる場合があります(たとえば、Vimファイルを無視したい)。このファイルに変更を加えるたびに、gitはそれを変更されたファイルとして表示します。だから私の質問:
プロセスに固有のファイル(Vim一時ファイルなど)を除外する場合は、(ローカル)ファイル.git/info/exclude
を編集し、そこに除外パターンを追加します。このファイルは、プロジェクト全体の除外用に設計されている.gitignore
ではなく、開発者固有の除外用に設計されています。
要約すると、.gitignore
に何が追加されるかについて全員が同意する必要があります。同意しないファイルについては、.git/info/exclude
を使用してください。
git-update-index を使用して、すでにバージョン管理されているファイルへの変更を一時的に無視します。
git update-index --assume-unchanged <files>
その使用を元に戻すには:
git update-index --no-assume-unchanged <files>
Git-resetを超えて永続化する必要がある場合は、update-indexのskip-worktree
およびno-skip-worktree
オプションも確認してください。
このコマンドを使用して、必要なものを取得できます。
git rm --cached path/to/file
または
git rm -r --cached path/ignore/dir
これはトラックをgitから削除するだけで、実際のファイルは削除しません。
次に、無視ファイルを編集して、これらのファイルまたはディレクトリを追跡解除できます。
私は一般的な質問(Gitに追跡されたファイルを無視させる)には本当に答えることができません-これは、有用であるよりもはるかに有害な機能であると私に思わせます。
ただし、 gitignoreマニュアルページ は、除外されたファイルのパターンを構成するいくつかの方法を指定します。
特に、これらのさまざまな方法の使用方法について明確に説明しています。
- バージョン管理され、クローン経由で他のリポジトリに配布されるパターン(つまり、すべての開発者が無視するファイル)は、
.gitignore
ファイルに入れる必要があります。
あなたの.gitignore
ファイルは同僚と違ってはならないことを意味します-意図したとおりに機能しています。
特定のリポジトリに固有であるが、他の関連リポジトリと共有する必要がないパターン(たとえば、リポジトリ内に存在するが、1人のユーザーのワークフローに固有の補助ファイル)は、
$GIT_DIR/info/exclude
ファイルに入力する必要があります。ユーザーがすべての状況でgitに無視させたいパターン(たとえば、バックアップまたはユーザーの選択したエディターによって生成された一時ファイル)は通常、指定されたファイルに入りますユーザーの
core.excludesfile
の~/.gitconfig
。
そこにあります。 core.excludesfile
ファイルのパスを~/.gitconfig
ファイルに指定し、除外するパターンをそのファイルに入れます。
他の場所で ファイルを除外する3つの方法 について書きました。
要約すれば:
リストの下位のアイテムは上位のアイテムよりも優先され、!
ファイル内のいずれかのパターンでアイテムの前に置くと、以前の除外が取り消されます。
このパラダイムは、Gitの他の場所で見られます。たとえば、サブモジュールを使用していた場合、使用するサブモジュールのURLは.gitmodules
リポジトリ内のファイルですが、.git/configファイルで使用するURLを上書きできます。
以下は、SmartGitHG viusalインターフェースでGitを使用しているユーザー向けの一般化されたユビキタス(個別ではない)ソリューションです。