リポジトリとリモートの操作
Gitリポジトリとリモートを使用すると、異なる場所間で作業を同期することにより、他者と共同作業できるようになります。VS Codeは、コマンドラインGitの知識がなくても、リモートリポジトリを操作するための統合ツールを提供します。
この記事では、VS CodeでのGitリポジトリとリモートの操作、クローン、発行、変更の同期、複数のリポジトリの管理について説明します。
リモートの理解
リモートとは、GitHub、Azure DevOps、GitLabなどの別のサーバーでホストされているGitリポジトリのことです。リモートは、チームメンバーが作業を共有できる中心的な場所を提供することで、共同作業を可能にします。
リポジトリをクローンすると、Gitは自動的にoriginという名前のリモートを作成し、元のリポジトリを指します。異なるサーバーやリポジトリとやり取りする必要がある場合は、複数のリモートを操作できます。
リモートの操作には、主に3つの操作があります。
-
フェッチ: 作業中のファイルを変更せずに、リモートからコミットをダウンロードします。これにより、他者の変更を自分の作業にマージせずに、他者が行ったことを確認できます。
-
プル: リモートからコミットをダウンロードし、現在のブランチにマージします。これは、フェッチとマージを1つの操作で行うものです。
-
プッシュ: ローカルのコミットをリモートにアップロードし、他者があなたの変更にアクセスできるようにします。

プッシュする際、Gitはコミットを送信するリモートを知る必要があります。デフォルトでは、Gitは現在のブランチに設定されているアップストリームブランチを使用します。アップストリームが設定されていない場合、VS Codeはブランチを発行してアップストリームを設定するように促します。
リモートの追加
リポジトリに新しいリモートを追加するには
-
ソース コントロールビュー(⌃⇧G (Windows、Linux Ctrl+Shift+G))で、その他のアクション(...)>リモート>リモートの追加を選択します。
または、コマンド パレット(⇧⌘P (Windows、Linux Ctrl+Shift+P))からGit: リモートの追加コマンドを実行します。
-
リモートのURLを入力します。
-
リモートの名前を入力します(例:
upstream)。
リポジトリには、フェッチまたはプッシュできる追加のリモートが追加されました。
同様の手順でリモートを削除できます(Git: リモートの削除)。
リポジトリのクローン
クローンは、リモートリポジトリのローカルコピーをコンピューターに作成することです。クローンされたリポジトリには、リモートのすべてのブランチ、コミット、履歴が含まれます。デフォルトでは、Gitはクローン元URLを指すoriginという名前のリモートを設定します。
リポジトリをクローンするには、コマンド パレット(⇧⌘P (Windows、Linux Ctrl+Shift+P))でGit: クローンコマンドを実行するか、ソース コントロールビューのリポジトリのクローンボタンを選択します。
GitHubからクローンする場合、VS CodeはGitHubでの認証を求めます。次に、リストからクローンするリポジトリを選択してコンピューターにクローンします。リストには、公開リポジトリとプライベートリポジトリの両方が含まれます。他のGitプロバイダーの場合は、リポジトリのURLを入力します。

クローンする際、VS Codeはリポジトリを保存するローカルフォルダを選択するように求めます。クローン後、クローンされたリポジトリを新しいウィンドウで開くこともできます。
GitHub Pull Requests and Issues拡張機能は、プルリクエストと問題の管理でGitHubの統合を強化します。VS CodeでのGitHubの操作について詳しく学んでください。
GitHubへの発行
リモートに接続されていないローカルリポジトリがある場合は、VS Codeから直接GitHubに発行できます。
リポジトリをGitHubに発行するには
-
ソース コントロールビューを開きます。
-
ソース コントロールビューでGitHubへの発行を選択します。
-
求められたらGitHubにサインインします。
-
公開リポジトリまたはプライベートリポジトリを作成するかどうかを選択します。
-
初期コミットに含めるファイルを選択します。
VS CodeはGitHubに新しいリポジトリを作成し、それをリモートとして追加し、コミットをプッシュします。
GitHubへの発行は、ローカルの作業をオンラインにするための最も簡単な方法です。リポジトリの作成、リモートの設定、コミットのプッシュを1つのステップで行います。
プッシュ、プル、同期
プッシュ、プル、同期は、ローカルの作業をリモートリポジトリと同期させるためのコア操作です。
コミットのプッシュ
プッシュは、ローカルのコミットをリモートリポジトリにアップロードします。コミットをプッシュするには
-
変更をローカルにコミットします。
-
ソース コントロールビューで、その他のアクション(...)>プッシュを選択します。
または、ステータス バーの同期アイコンを選択して、プルとプッシュを1つの操作で行います。特定のリモートにプッシュしたい場合は、プッシュ先オプションを使用します。
ソース コントロール グラフビューのツールバーにあるプッシュアイコンを使用して、ローカルコミットをプッシュすることもできます。
-
求められたら、リモートでの認証にサインインします。
コミットはリモートブランチにアップロードされます。他のチームメンバーは、あなたの変更をプルできるようになります。
ブランチにアップストリームが設定されていない場合、VS Codeは最初にブランチを発行するように促します。
コミットのプル
プルは、リモートリポジトリからコミットをダウンロードし、ローカルブランチにマージします。コミットをプルするには
-
ソース コントロールビューで、その他のアクション(...)>プルを選択します。
または、ステータス バーの同期アイコンを選択して、プルとプッシュを1つの操作で行います。特定のリモートからプルしたい場合は、プル元オプションを使用します。
ソース コントロール グラフビューのツールバーにあるプルアイコンを使用して、リモートコミットをプルすることもできます。
-
VS Codeはリモートコミットをダウンロードしてマージします。
ローカルの変更とリモートのコミットの間に競合がある場合、VS Codeはマージ競合解決ツールを使用して解決するのを支援します。
リベースしてプル
リモートの変更をマージする代わりに、ローカルのコミットをリモートの変更の上にリベースできます。
-
ソース コントロールビューで、その他のアクション(...)>プル (リベース)を選択します。
-
VS Codeはリモートコミットを先に適用し、その上にローカルコミットを再適用します。
リベースは、マージコミットなしで線形履歴を作成します。Gitリベースについて詳しく学んでください:Git rebase。
変更の同期
同期は、プルとプッシュの操作を組み合わせたものです。まずリモートから変更をプルし、次にローカルコミットをプッシュします。これは、作業を同期させるための推奨される方法です。
変更を同期するには
- ソース コントロールビューで変更の同期を選択します。
- ステータス バーの同期アイコンを選択します。

ステータス バーの同期インジケーターは、プッシュ(↑)とプル(↓)するコミットの数を示します。例えば、↑2 ↓1は、2つのコミットをプッシュし、1つのコミットをプルする必要があることを意味します。
同期する前にVS Codeが確認を求めるかどうかを制御するには、git.confirmSync設定を構成します。
コミットのフェッチ
フェッチは、リモートリポジトリからコミットをダウンロードしますが、ローカルブランチにマージしません。これにより、統合する前に受信した変更を確認できます。
コミットをフェッチするには
- ソース コントロールビューで、その他のアクション(...)>フェッチを選択します。
- すべての設定済みリモートからフェッチするには、すべてリモートからフェッチを選択します。
- 削除されたリモートブランチをフェッチして削除するには、フェッチ (Prune)を選択します(常にPruneするには、git.pruneOnFetch設定を有効にします)。
フェッチ後、ソース コントロール グラフで受信したコミットを確認してから、プルでマージできます。
バックグラウンドでコミットを自動的にフェッチするには、git.autofetch設定を有効にします(デフォルトでは無効)。フェッチ間隔を構成するには、git.autofetchPeriod設定を使用します(デフォルトは180秒)。
ステータス バーの同期アクション
ステータス バーは、ソース コントロールビューを開かずに、一般的なリポジトリおよびリモート操作へのクイックアクセスを提供します。
ブランチインジケーター
左下隅のブランチインジケーターは、以下を示します。
- 現在のブランチ名: 選択してブランチを切り替えます。
- 同期ステータス: プッシュ(↑)およびプル(↓)するコミット数。
- 発行状態: 未発行ブランチの場合は、ブランチの発行が表示されます。

ステータス バーの同期アイコン(回転する矢印)を使用すると、リモートとの変更の同期(プッシュとプル)ができます。
これらの設定でステータス バーの動作をカスタマイズできます。
- git.showActionButton: 表示するアクションボタン(同期またはコミット)を制御します。
- git.showPushSuccessNotification: プッシュ成功後に通知を表示します。
- git.showCommitInput: ソース コントロールビューにコミット入力を表示します。
ソース コントロール グラフ
ソース コントロール グラフは、コミット履歴、ブランチ関係、リモートとの同期ステータスを視覚的に表示します。これにより、受信および送信の変更を簡単に理解できます。

グラフは以下を表示します。
- 現在のブランチ: 特別なインジケーターで強調表示されます。
- アップストリームブランチ: プルしていないリモートのコミットを表示します。
- 受信コミット(↓): プルできるリモートのコミット。
- 送信コミット(↑): プッシュできるローカルコミット。
- その他のブランチ: リポジトリ内のローカルおよびリモートブランチ。
グラフのツールバーから直接フェッチ、プッシュ、プルを実行できます。グラフビューは受信および送信の変更も表示するため、同期が必要な時期を簡単に把握できます。グラフ内の項目を選択すると、そのコミットで変更された個々のファイルを確認できます。
これらの設定でソース コントロール グラフをカスタマイズできます。
- scm.graph.showIncomingChanges: 受信コミットを表示または非表示にします。
- scm.graph.showOutgoingChanges: 送信コミットを表示または非表示にします。
- git.graph.pageSize: 初期ロードするコミット数。
コミット履歴の表示については、ソース コントロール グラフを使用したコミット履歴の表示を参照してください。
リポジトリの操作
リポジトリビューを使用すると、単一のワークスペースで複数のGitリポジトリを管理できます。これは、複数のリポジトリにまたがるプロジェクトを操作する場合に便利です。リポジトリビューは、リポジトリに関連付けられたGitワークツリーも表示します。

リポジトリビューを表示するには、コマンド パレット(⇧⌘P (Windows、Linux Ctrl+Shift+P))からSource Control: Focus on Repositories Viewコマンドを実行します。scm.alwaysShowRepositories設定を構成すると、ソース コントロールビューにリポジトリビューが常に表示されます。
各リポジトリについて、アクティブなブランチ、同期ステータスを確認でき、フェッチ、プル、プッシュなどのアクションにアクセスできます。
VS Codeは、Gitリポジトリが含まれるフォルダーを開くと、自動的にGitリポジトリを検出します。複数のリポジトリ(モノレポなど)を持つフォルダーを開いた場合、すべてのリポジトリがリポジトリビューに表示されます。
リポジトリ選択モード
一度に1つのリポジトリまたはワークツリーに焦点を当てることを好む場合は、単一リポジトリモードに切り替えることができます。そのモードでは、選択したリポジトリの変更とグラフのみが表示されます。マルチリポジトリモードで操作する場合、ソース コントロールビューはすべてのリポジトリの変更を表示します。scm.repositories.selectionMode設定を使用して、マルチリポジトリモードと単一リポジトリモードを切り替えます。
認証情報ヘルパー
認証情報ヘルパーは、認証情報を安全に保存するため、プッシュまたはプルするたびにそれらを入力する必要がなくなります。VS Codeがリモートリポジトリとやり取りするたびに認証情報を求められるのを避けるには、認証情報ヘルパーを設定する必要があります。
次のステップ
- ブランチとワークツリー - ブランチ管理と並列開発について学ぶ
- ステージングとコミット - コミットワークフローをマスターする
- マージ競合 - ブランチをマージする際の競合を処理します。
- GitHubとの連携 - プルリクエストとGitHub連携について学ぶ