web-dev-qa-db-ja.com

Git:バージョン管理されたファイルを無視する

.gitignoreファイルは、制御したくないファイルの一部を無視するのに非常に役立ちます。残念ながら、ファイルがすでにバージョン管理されている場合は使用できません。たとえば、私の.gitignore(既にgitに追加されている)ファイルは、同僚が望んでいるファイルとは異なる場合があります(たとえば、Vimファイルを無視したい)。このファイルに変更を加えるたびに、gitはそれを変更されたファイルとして表示します。だから私の質問:

  1. すでにGitによって制御されている特定のファイルの変更を無視する方法はありますか?!
  2. これらの変更をコミットする方法はありますが、自分だけのためにそれを保持しますか?明らかに、私は特定のブランチで作業しているため、ブランチを使用したくありません。
47
Rafid

プロセスに固有のファイル(Vim一時ファイルなど)を除外する場合は、(ローカル)ファイル.git/info/excludeを編集し、そこに除外パターンを追加します。このファイルは、プロジェクト全体の除外用に設計されている.gitignoreではなく、開発者固有の除外用に設計されています。

要約すると、.gitignoreに何が追加されるかについて全員が同意する必要があります。同意しないファイルについては、.git/info/excludeを使用してください。

13
Greg Hewgill

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オプションも確認してください。

116

このコマンドを使用して、必要なものを取得できます。

git rm --cached path/to/file

または

git rm -r --cached path/ignore/dir

これはトラックをgitから削除するだけで、実際のファイルは削除しません。

次に、無視ファイルを編集して、これらのファイルまたはディレクトリを追跡解除できます。

5
user1927627

私は一般的な質問(Gitに追跡されたファイルを無視させる)には本当に答えることができません-これは、有用であるよりもはるかに有害な機能であると私に思わせます。

ただし、 gitignoreマニュアルページ は、除外されたファイルのパターンを構成するいくつかの方法を指定します。

特に、これらのさまざまな方法の使用方法について明確に説明しています。

  • バージョン管理され、クローン経由で他のリポジトリに配布されるパターン(つまり、すべての開発者が無視するファイル)は、.gitignoreファイルに入れる必要があります。

あなたの.gitignoreファイルは同僚と違ってはならないことを意味します-意図したとおりに機能しています。

  • 特定のリポジトリに固有であるが、他の関連リポジトリと共有する必要がないパターン(たとえば、リポジトリ内に存在するが、1人のユーザーのワークフローに固有の補助ファイル)は、$GIT_DIR/info/excludeファイルに入力する必要があります。

  • ユーザーがすべての状況でgitに無視させたいパターン(たとえば、バックアップまたはユーザーの選択したエディターによって生成された一時ファイル)は通常、指定されたファイルに入りますユーザーのcore.excludesfile~/.gitconfig

そこにあります。 core.excludesfileファイルのパスを~/.gitconfigファイルに指定し、除外するパターンをそのファイルに入れます。

2
Jean Hominal

他の場所で ファイルを除外する3つの方法 について書きました。

要約すれば:

  1. グローバルgit ignoreファイルは、そのシステム上のすべてのリポジトリに適用されます
  2. リポジトリ内の.gitignoreファイルは、リポジトリとそのリポジトリのすべてのクローンを適用します。
  3. .git/info/excludeファイルはそのリポジトリにのみ適用されます。

リストの下位のアイテムは上位のアイテムよりも優先され、!ファイル内のいずれかのパターンでアイテムの前に置くと、以前の除外が取り消されます。

このパラダイムは、Gitの他の場所で見られます。たとえば、サブモジュールを使用していた場合、使用するサブモジュールのURLは.gitmodulesリポジトリ内のファイルですが、.git/configファイルで使用するURLを上書きできます。

1
Abizern

以下は、SmartGitHG viusalインターフェースでGitを使用しているユーザー向けの一般化されたユビキタス(個別ではない)ソリューションです。

  • 「リポジトリ」ウィンドウで無視するフォルダを選択します。
  • 「ファイル」ウィンドウでそのフォルダからすべてのファイルを選択します(メインウィンドウの右上領域にあるそれぞれのフィルタアイコンをクリックして、変更されていないファイルを再表示します)。
  • コントロールパネルの[削除]をクリックします(必要に応じて、[ローカルファイルを削除する]チェックボックスをオンにします)。
  • ローカルの変更をコミットします。
  • 「リポジトリ」ウィンドウでフォルダを右クリックします。
  • 「無視」をクリックします。
0
cubrman