次の方法で共有


Git でファイルの変更を無視する

Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022

Visual Studio 2019 |Visual Studio 2022

プロジェクト内のすべてのファイルが Git による追跡を必要とするわけではありません。 通常、追跡を必要としないファイルの例としては、開発環境からの一時ファイル、テスト出力、ログなどがあります。

いくつかのメカニズムを使用して、プロジェクトのどのファイルを追跡すべきではないかを Git に通知し、Git がそれらのファイルに対する変更を報告しないようにすることができます。 Git で追跡されないファイルの場合は、 .gitignore または exclude ファイルを使用できます。 Git が既に追跡しているファイルについては、追跡を停止し、変更を無視するように Git に指示できます。

[前提条件]

カテゴリ Requirements
プロジェクトへのアクセス権 プロジェクトのメンバー。
アクセス許可 - プライベート プロジェクトのコードを表示する: 少なくとも Basic アクセス。
- プライベート プロジェクトのコードを複製または投稿する: 共同作成者 セキュリティ グループのメンバー、またはプロジェクト内の対応するアクセス許可。
- ブランチまたはリポジトリのアクセス許可を設定する: ブランチまたはリポジトリの アクセス許可を管理 します。
- 既定のブランチを変更する: リポジトリ のポリシー のアクセス許可を編集します。
- リポジトリをインポートする: プロジェクト管理者 セキュリティ グループのメンバーまたは Git プロジェクト レベルの [リポジトリ の作成 ] アクセス許可が [許可] に設定されています。 詳細については、「 Git リポジトリのアクセス許可を設定する」を参照してください。
サービス リポジトリが有効になっています
ツール Optional. az repos コマンドを使用する: Azure DevOps CLI

パブリック プロジェクトでは、 利害関係者 アクセス権を持つユーザーは、コードの表示、複製、投稿など、Azure Repos へのフル アクセス権を持ちます。

カテゴリ Requirements
プロジェクトへのアクセス権 プロジェクトのメンバー。
アクセス許可 - コードの表示: 少なくとも 基本 アクセス。
- コードの複製または投稿: 共同作成者 セキュリティ グループのメンバー、またはプロジェクト内の対応するアクセス許可。
サービス リポジトリが有効になっています

.gitignore ファイルを使用する

.gitignore ファイルを追加して構成することで、プロジェクト内の特定のファイルを追跡しないように Git に指示できます。 次の重要な点を確認します。

  • 追跡されていないファイル: .gitignore ファイル内のエントリは、追跡されていないファイルにのみ適用されます。 追跡対象のファイルに対する変更を Git が報告することを妨げることはありません。 追跡されるファイルは、コミットされ、最後の Git スナップショットに存在するファイルです。
  • ファイル検索パターン: .gitignore ファイル内の各行は、 .gitignore ファイル パスを基準としたファイル検索パターンを指定します。 .gitignore 構文は柔軟であり、ワイルドカードを使用して、名前、拡張子、パスで個々のファイルまたは複数のファイルを指定できます。 Git は、 .gitignore 検索パターンをプロジェクト内のファイルと照合して、無視するファイルを決定します。
  • 場所: 通常、 .gitignore ファイルをプロジェクトのルート フォルダーに追加します。 ただし、 .gitignore ファイルを任意のプロジェクト フォルダーに追加して、入れ子になった深さでそのフォルダーとそのサブフォルダー内で無視するファイルを Git に知らせることができます。 複数の .gitignore ファイルの場合、 .gitignore ファイルがフォルダー内で指定するファイル検索パターンは、 .gitignore ファイルが親フォルダー内で指定するパターンよりも優先されます。
  • 作成: .gitignore ファイルを手動で作成し、それにファイル パターン エントリを追加できます。 または、GitHub .gitignoreから開発環境用の テンプレートをダウンロードすることで、時間を節約できます。
  • 利点: .gitignore ファイルを使用する利点の 1 つは、変更を コミット して他のユーザーと共有できることです。

Git リポジトリを作成すると、Visual Studio によって Visual Studio 開発環境用の .gitignore ファイルが自動的 に作成されます

Visual Studio 2022 では、ソリューション エクスプローラーの Git メニュー、Git の変更、ショートカット メニューを使用して、Git バージョン管理エクスペリエンスを提供します。 Visual Studio 2019 バージョン 16.8 には、 チーム エクスプローラー の Git ユーザー インターフェイスも用意されています。 詳細については、「 Visual Studio 2019 - チーム エクスプローラー 」タブを参照してください。

[Git の変更] ウィンドウで、Git で無視する変更されたファイルを右クリックし、[このローカル項目を無視する] または [この拡張機能を無視する] を選択します。 これらのメニュー オプションは、追跡対象のファイルには存在しません。

Visual Studio の [Git の変更] ウィンドウの変更されたファイルのコンテキスト メニュー オプションのスクリーンショット。

  • [ このローカル項目を無視] オプションを選択すると、 .gitignore ファイルに新しいエントリが追加され、選択したファイルが変更されたファイルの一覧から削除されます。
  • [ この拡張子を無視] オプションを選択すると、 .gitignore ファイルに新しいエントリが追加され、選択したファイルと同じ拡張子を持つすべてのファイルが変更されたファイルの一覧から削除されます。

どちらのオプションでも、リポジトリのルート フォルダーにまだ存在しない場合は、 .gitignore ファイルが作成され、エントリが追加されます。

gitignore ファイルを編集する

.gitignore ファイル内の各エントリは、無視するファイルを指定するファイル検索パターン、番号記号 (#)、または空白行 (読みやすくするために) で始まるコメントのいずれかです。 .gitignore構文は柔軟であり、ワイルドカードを使用して、名前、拡張子、パスで個々のファイルまたは複数のファイルを指定できます。 ファイル検索パターンのすべてのパスは、 .gitignore ファイルに対する相対パスです。

一般的なファイル検索パターンの例を次に示します。

# Ignore all files with the specified name.
# Scope is all repo folders.
config.json

# Ignore all files with the specified extension.
# Scope is all repo folders.
*.json

# Add an exception to prevent ignoring a file with the specified name.
# Scope is all repo folders.
!package.json

# Ignore a file with the specified name.
# Scoped to the 'logs' subfolder.
/logs/test.logfile

# Ignore all files with the specified name.
# Scoped to the 'logs' subfolder and all folders beneath it.
/logs/**/test.logfile

# Ignore all files in the 'logs' subfolder.
/logs/

.gitignore ファイルを変更するとすぐに、Git によって無視されるファイルの一覧が更新されます。

Windows ユーザーは、円記号 (/) を使用する代わりに、.gitignore ファイルのパス区切り記号としてスラッシュ (\) を使用する必要があります。 フォルダーを指定するときは、すべてのユーザーが末尾にスラッシュを追加する必要があります。

グローバル .gitignore ファイルを使用する

.gitignore ファイルは、すべてのローカル Git リポジトリに適用されるグローバル無視ファイルとして指定できます。 これを行うには、次のように git config コマンドを使用します。

git config core.excludesfile <gitignore file path>

グローバル .gitignore ファイルは、Git がコンパイル済みバイナリなどの特定のファイルの種類をローカル リポジトリにコミットしないようにするのに役立ちます。 リポジトリ固有の .gitignore ファイル内のファイル検索パターンは、グローバル .gitignore ファイルのパターンよりも優先されます。

除外ファイルを使用する

ファイル検索パターンのエントリを、ローカル リポジトリの exclude フォルダーの.git/info/ ファイルに追加することもできます。 exclude ファイルを使用すると、Git は、どの追跡されていないファイルを無視するかを認識できます。 ファイル検索パターンには、 .gitignore ファイルと同じ構文が使用されます。

exclude ファイル内のエントリは、追跡されていないファイルにのみ適用されます。 Git が既に追跡しているコミット済みファイルに対する変更を報告することを妨げることはありません。 リポジトリごとに 1 つの exclude ファイルのみが存在します。

Git は exclude ファイルをコミットまたはプッシュしないため、他のユーザーに影響を与えることなく、ローカル システム上のファイルを無視するために安全に使用できます。

git update-index を使用して変更を無視する

ローカル リポジトリ ファイルの追跡を一時的に停止し、Git でファイルへの変更を無視すると便利な場合があります。 たとえば、変更をコミットするリスクなしに、開発環境の設定ファイルをカスタマイズできます。 これを行うには、git update-index フラグを指定して skip-worktree コマンドを実行します。

git update-index --skip-worktree <file path>

追跡を再開するには、git update-index フラグを指定して --no-skip-worktree コマンドを実行します。

または、git update-index フラグを指定して assume-unchanged コマンドを使用して、ファイルの追跡を一時的に停止し、Git でファイルへの変更を無視させることができます。 ファイルの内容を変更する Git skip-worktree操作ではpull フラグを元に戻すことができるため、このオプションは assume-unchanged フラグよりも効果が低くなります。

git update-index --assume-unchanged <file path>

追跡を再開するには、git update-index フラグを指定して --no-assume-unchanged コマンドを実行します。

git rm を使用して変更を無視する

.gitignoreまたはexclude ファイル内のエントリは、Git が既に追跡しているファイルには影響しません。 Git は、以前にコミットしたファイルを追跡します。 Git スナップショットからファイルを完全に削除して Git が追跡しなくなったが、ファイル システムから削除しないようにするには、次のコマンドを実行します。

git rm --cached <file path>
git commit <some message>

次に、 .gitignore または exclude ファイル エントリを使用して、Git がファイルへの変更を報告できないようにします。

次のステップ