𝕏📘📖☁️
GitHub Fork 元リポジトリからブランチを作成する方法 🔀

GitHub Fork 元リポジトリからブランチを作成する方法 🔀

GitHubでforkしたリポジトリがあるんですが、fork元リポジトリのブランチを作成元として、forkしたリポジトリに新規ブランチを作成する方法を紹介します!

そもそも fork とは? 🤔

リポジトリをフォークする - GitHub Docs

そもそもforkとは、ユーザーが管理するリポジトリのコピーを作成することです。

OSSなど、ユーザー自身が管理していないリポジトリは直接変更することができません。そのため一度forkしてユーザー自身が管理するリポジトリを作成します。forkしたリポジトリに対してユーザー自身で変更を加え、fork元リポジトリに対してPRを作成してマージされることで、OSSにコントリビュートできます ✨

About forks - GitHub Docs

なぜ fork 元からブランチを作成するのか?

fork した目的が「OSS にコントリビュートすること」であれば、fork 元からブランチを作成する必要は基本的にありません。なぜなら、fork したリポジトリに加えた変更は、fork 元にマージされてほしい内容のみになっているからです。 ではどのような時に fork 元からブランチを作成する必要があるでしょうか。 「fork したリポジトリを個人用途向けにカスタマイズをしている」場合です。fork 元にマージされて欲しくない内容が main ブランチにコミットされています。 easy-notion-blog(本ブログ)もそうですが、以下を実現するために fork したリポジトリを運用しています。

  • 個人用途向けにカスタマイズしたい
  • fork 元の更新を取り込みたい

検証環境

前置きが長くなりました。 最近 fork した easy-notion-blog を例に説明します。具体的には以下のような環境で試してみます。

作成元作成先
リポジトリotyo/easy-notion-blogymmmym/easy-notion-blog
ブランチmainfeature/test

ちなみにブラウザ上では以下の画面の「New branch」から作成できます。

Git でフォークから元リポジトリに切り替える手順

ローカルリポジトリでの方法

ローカルリポジトリで同様のことをやってみます。 fork したリポジトリに移動して git remote で remote リポジトリの一覧を確認します。

git remote -v
origin  ssh://git@github.com/ymmmtym/easy-notion-blog.git (fetch)
origin  ssh://git@github.com/ymmmtym/easy-notion-blog.git (push)

ここでは、origin(fork 先)の情報しか登録されていないので、upstream(fork 元)を追加して fetch(更新)します。

git remote add upstream ssh://git@github.com/otoyo/easy-notion-blog.git
git fetch upstream

upstream が追加されていることを確認します。

git remote -vv
origin  ssh://git@github.com/ymmmtym/easy-notion-blog.git (fetch)
origin  ssh://git@github.com/ymmmtym/easy-notion-blog.git (push)
upstream        ssh://git@github.com/otoyo/easy-notion-blog.git (fetch)
upstream        ssh://git@github.com/otoyo/easy-notion-blog.git (push)

start-point(ブランチの作成元)を upstream/main (Upstream の main ブランチ)に設定し、-c オプションで作成するブランチ名を指定します。

git switch upstream/main -c feature/test

以上でブランチ作成ができました。 これ以降は通常作業を行い、 git push origin feature/test すると自身の GitHub リポジトリにもブランチが作成されます。

関連記事