PCロール

PCロール

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

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

こんにちは。

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

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

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

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

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

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

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

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

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

写真

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

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

写真

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

code
編集モード
git fetch

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

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

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

写真

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

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

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

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

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

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

code
編集モード
git fetch upstream

コマンドを実行した後、

code
編集モード
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 の巻物

← Back to home