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

プッシュするとき、Git はコミットの送信先となるリモートを知る必要があります。デフォルトでは、Git は現在のブランチに構成されているアップストリーム ブランチを使用します。アップストリームが設定されていない場合、VS Code はブランチを公開してアップストリームを設定するように求めます。
リモートの追加
リポジトリに新しいリモートを追加するには
-
ソース管理ビュー (⌃⇧G (Windows、Linux Ctrl+Shift+G)) で、その他のアクション (...) > リモート > リモートの追加 を選択します
または、コマンド パレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) から Git: リモートの追加 (Git: Add Remote) コマンドを実行します。
-
リモートの URL を入力します
-
リモートの名前を入力します (例:
upstream)
これで、リポジトリにフェッチやプッシュが可能なリモートが追加されました。
リモートを削除する場合も同様の手順を実行します (Git: リモートの削除 (Git: Remove Remote))。
リポジトリのクローン
クローンを作成すると、マシン上にリモート リポジトリのローカル コピーが作成されます。クローンされたリポジトリには、リモートのすべてのブランチ、コミット、履歴が含まれます。デフォルトでは、Git はクローン元の URL を指す origin という名前のリモートを構成します。
リポジトリをクローンするには、コマンド パレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) で Git: クローン (Git: Clone) コマンドを実行するか、ソース管理ビューの リポジトリのクローン ボタンを選択します。
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 回の操作でプルとプッシュの両方を実行できます。特定のリモートにプッシュしたい場合は、プッシュ先... (Push to...) オプションを使用します。
ソース管理グラフ ビューのツールバーにあるプッシュ アイコンを使用して、ローカル コミットをプッシュすることもできます。
-
プロンプトが表示されたら、サインインしてリモートの認証を行います
コミットがリモート ブランチにアップロードされます。これで、他のチーム メンバーがあなたの変更をプルできるようになります。
ブランチにアップストリームが構成されていない場合、VS Code は最初にブランチを公開するように求めます。
コミットのプル
プルすると、リモート リポジトリからコミットがダウンロードされ、ローカル ブランチにマージされます。コミットをプルするには
-
ソース管理ビューで その他のアクション (...) > プル を選択します
または、ステータス バーの同期アイコンを選択すると、1 回の操作でプルとプッシュの両方を実行できます。特定のリモートからプルしたい場合は、プル元... (Pull from...) オプションを使用します。
ソース管理グラフ ビューのツールバーにあるプル アイコンを使用して、リモート コミットをプルすることもできます。
-
VS Code がリモート コミットをダウンロードしてマージします
ローカルの変更とリモート コミットの間に競合がある場合、VS Code の マージ競合解決ツール を使用して競合を解決できます。
リベースしてプル
リモートの変更をマージする代わりに、リモートの変更の上にローカルのコミットをリベースできます
-
ソース管理ビューで その他のアクション (...) > プル (リベース) を選択します
-
VS Code は最初にリモート コミットを適用し、その上にローカル コミットを再適用します
リベースにより、マージ コミットのない直線的な履歴が作成されます。Git のリベースについての詳細を参照してください。
変更の同期
同期はプル操作とプッシュ操作を組み合わせたもので、最初にリモートから変更をプルし、次にローカル コミットをプッシュします。これは作業を同期させておくための推奨される方法です。
変更を同期するには
- ソース管理ビューで 変更の同期 を選択します
- ステータス バーの同期アイコンを選択します

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

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

グラフには以下が表示されます。
- 現在のブランチ: 特別なインジケーターでハイライト表示されます
- アップストリーム ブランチ: まだプルしていないリモート上のコミットを表示します
- 入ってくるコミット (Incoming commits) (↓): プル可能なリモート上のコミット
- 出ていくコミット (Outgoing commits) (↑): プッシュ可能なローカル コミット
- その他のブランチ: リポジトリ内のローカル ブランチおよびリモート ブランチ
グラフのツールバーから直接フェッチ、プッシュ、プルを行えます。また、グラフ ビューには入ってくる変更と出ていく変更も表示されるため、同期が必要なタイミングを簡単に確認できます。グラフ内のアイテムを選択すると、そのコミットで変更された個々のファイルを表示できます。
以下の設定を使用して、ソース管理グラフをカスタマイズします
- scm.graph.showIncomingChanges : 入ってくるコミットの表示/非表示を切り替えます
- scm.graph.showOutgoingChanges : 出ていくコミットの表示/非表示を切り替えます
- scm.graph.pageSize : 最初期に読み込むコミットの数
ソース管理グラフを使用したコミット履歴の表示に関する詳細を参照してください。
リポジトリの操作
「リポジトリ」ビューを使用すると、1 つのワークスペースで複数の Git リポジトリを管理できます。これは、複数のリポジトリにまたがるプロジェクトを処理する場合に便利です。「リポジトリ」ビューには、リポジトリに関連付けられた Git ワークツリー も表示されます。

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