GitHub Fork 元リポジトリからブランチを作成する方法 🔀
GitHubでforkしたリポジトリがあるんですが、fork元リポジトリのブランチを作成元として、forkしたリポジトリに新規ブランチを作成する方法を紹介します!
そもそも fork とは? 🤔
そもそもforkとは、ユーザーが管理するリポジトリのコピーを作成することです。
OSSなど、ユーザー自身が管理していないリポジトリは直接変更することができません。そのため一度forkしてユーザー自身が管理するリポジトリを作成します。forkしたリポジトリに対してユーザー自身で変更を加え、fork元リポジトリに対してPRを作成してマージされることで、OSSにコントリビュートできます ✨
なぜ fork 元からブランチを作成するのか?
fork した目的が「OSS にコントリビュートすること」であれば、fork 元からブランチを作成する必要は基本的にありません。なぜなら、fork したリポジトリに加えた変更は、fork 元にマージされてほしい内容のみになっているからです。 ではどのような時に fork 元からブランチを作成する必要があるでしょうか。 「fork したリポジトリを個人用途向けにカスタマイズをしている」場合です。fork 元にマージされて欲しくない内容が main ブランチにコミットされています。 easy-notion-blog(本ブログ)もそうですが、以下を実現するために fork したリポジトリを運用しています。
- 個人用途向けにカスタマイズしたい
- fork 元の更新を取り込みたい
検証環境
前置きが長くなりました。 最近 fork した easy-notion-blog を例に説明します。具体的には以下のような環境で試してみます。
| 作成元 | 作成先 | |
|---|---|---|
| リポジトリ | otyo/easy-notion-blog | ymmmym/easy-notion-blog |
| ブランチ | main | feature/test |
ちなみにブラウザ上では以下の画面の「New branch」から作成できます。
ローカルリポジトリでの方法
ローカルリポジトリで同様のことをやってみます。
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 リポジトリにもブランチが作成されます。