PCロール

PCロール

forkしたリポジトリをupstreamと同期する方法

forkしたリポジトリをupstreamと同期する方法

こんにちは。

組織のリポジトリを fork してから、自分の作業環境で開発をするとき、ありますよね。

今回は、fork したリポジトリの、upstream の変更を自分の環境に同期する方法をお伝えします。

方法は、全部で 3 つあります。

  1. GitHub 上で、ボタンを使って同期する

  2. コマンドラインを使って同期する

  3. GitHub CLI を使って同期する

今回は、1,2 の方法を紹介します。

GitHub 上で、ボタンを使って同期する

GitHub で、fork した自分のリポジトリを開きます。

写真

こちらの写真の、Sync fork ボタンを押します。

upstream に変更がある場合には、下の画像のような表示になりますので、「Update branch」ボタンを押せば同期ができます。

写真

同期をした後は、いつも通りターミナルで

git fetch

を実行して変更の同期をすれば完了です!

upstream に変更がない場合は、以下のような画面が出ます。

この場合、origin と upstream の間で差分がないため、何もしなくて OK です。

写真

コマンドラインを使って同期する

ボタンをぽちぽちするだけでは物足りない!

コマンドを打ちたくなるのがエンジニアの性ですよね。

もちろん、コマンドラインを用いて同期する方法もあります。

やり方は、こちらもそんなに難しくありません。

まず、cdコマンドでプロジェクトディレクトリに移動します。

git fetch upstream

コマンドを実行した後、

git merge upstream/main

コマンドを実行します。

そのあと、VSCode の場合は「変更の同期」ボタンを押せば(git push すれば)完了です。

写真

ちょっと解説

コマンドラインを用いて同期する方法について、少し解説します。

upstream のリポジトリを fork し、自分の環境で clone して作業する場合、その 3 つの環境の位置関係を図にすると以下のようになります。

写真

upstream から、自分のリポジトリ(origin)に fork し、

そこ(自分のリポジトリ)から local にgit clone するというイメージです。

そして、先ほど説明した各コマンドの役割は、以下の図のようになります。

写真

git fetch upstreamコマンド:upstream の内容を、自分の local PC の環境に取り込む役割

git merge upstream/main コマンド:自分の local PC の内容を、origin ブランチに merge する

『変更の同期』ボタン:merge した内容を、origin に push して、反映させる

upstream,origin,local の位置関係がややこしかったので、図にまとめてみました。

参考になれば幸いです。

おわりに

最後までご覧いただきありがとうございます。

PC ロールでは、テクノロジーに関する情報をまとめて発信しています。

また、おすすめのガジェットについて幅広く紹介するガジェロールもあります。

ガジェットやソフトを使うエンジニア・クリエイターのみなさん、ぜひご覧ください。

ガジェロール | ガジェットの巻物

PC ロール | PC の巻物