📑

GithubでForkしたリポジトリをFork元から切り離して管理する

2024/06/20に公開

TL;DR

本記事は以下のGithubのドキュメントをまとめなおしたものです。
時間がない方はこちらを読んでいただいた方が早いかと思います。
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/detaching-a-fork

動機

GithubでForkしたリポジトリに対して、Pull Requestを作成した際にForkした自身のリポジトリのブランチをマージ先にしたいのに誤ってFork元のリポジトリのブランチをマージ先にPull Requestを作成してしまったことがありました。

Pull Requestのマージ先は元のリポジトリのベースブランチから変更できないようで、別途Fork元から切り離して管理する方法を調べてみました。

やり方

  • ローカルで作業するものは(ローカル)
  • Github上で作業するものは(Github)

として見出しの最初に表記していますのでご参考にしてください。

1. (Github) 自身のGithubで管理したいリポジトリをForkします。

Forkに関してはこちらを参考にしてください。

2. (ローカル) Terminal上でForkされたリポジトリのクローンをローカルに作成します。

git clone --bare https://github.com/EXAMPLE-USER/FORK-NAME.git

もちろんSSHでもクローンできます

git clone --bare git@github.com:EXAMPLE-USER/FORK-NAME.git

3. (Github) フォークされたリポジトリをGithub上から削除します。

リポジトリ削除に関してはこちらを参考にしてください。

4. (Github) Github上で先ほど削除した(Forkした)リポジトリと同じ名前のリポジトリを再度作成します。

リポジトリ作成に関してはこちらを参考にしてください。

5. (ローカル) ローカルでクローンしたディレクトリに移動して先ほど作成した空のリポジトリに対してミラープッシュします。

cd FORK-NAME.git
git push --mirror https://github.com/EXAMPLE-USER/FORK-NAME.git

6. (ローカル) 2 で作成したローカル上のクローンを削除します。

cd ..
rm -rf FORK-NAME.git

参考

Github Docs
https://docs.github.com/ja

Discussion