GitHub でリポジトリの名前を変更する
テストで使っていたリポジトリをそのまま使い続けたくなったため、リポジトリの名前を変更する方法を調べたメモ。
最終的な目標
今回は以下の項目を目標として、その方法を調べる。
- 付属する情報は引き継ぎたい(PR など)
- 「名前を変更した」という記録は残したい
- 外部と連携している情報はそれほど重視しない(Vercel へインポートされたリポジトリなど)
公式の変更方法
少し調べてみると、公式に変更方法があるという情報が出てくる。
リポジトリの名前を変更すると、プロジェクトサイトの URL を除くすべての既存の情報は、下記を含む新しい名前に自動的にリダイレクトされます。
- 問題
- Wiki
- Star
- フォロワー
プロジェクトサイトに関する詳しい情報については「GitHub Pagesについて」を参照してください。
Web トラフィックのリダイレクトに加え、前の場所をターゲットにしたすべての git clone、git fetch、または git push 操作は、引き続き新しい場所に対して行われているように機能します。 ただし、混乱を低減するため、既存のローカルクローンが新しいリポジトリ URL を指すよう更新することを強く推奨します。 これを行うには、コマンドラインで git remote を使用します。
この方法であれば付属する情報なども失うことなく名前の変更ができそうなので、試してみる。
- https://github.com/hankei6km/test-rename-or-fork-rename を作成し https://github.com/hankei6km/test-rename-or-fork-rename-1 へ変更
- ブラウザで古いアドレスへアクセスしてみる → 新しいリポジトリへリダイレクトされた。
- GitHub 上では各種アドレスなどが新しい名前に対応した状態で表示される → clone 用のアドレスは
git@github.com:hankei6km/test-rename-or-fork-rename-1.git
等。 - ローカルの remote はそのままで push してみる → push できた。
- また、後述の確認により PR もそのまま引き継がれることがわかっている。
- ただし「名前を変更した」という情報は見当たらなかった。
以上の点をまとめると以下のようになる
- 良いところ
- 設定画面で操作するだけで簡単に変更できる
- リダイレクトの設定があるので当面はローカル設定などの変更はいらない
- 良くないところ
- 変更したということが確認できない(たぶん)
新しいリポジトリに push しなおしてみる
フォークなら名前変更の記録(フォーク元)が確認できるのでは?と思い試してようとしたが、自分のリポジトリはフォークできなかった。
代わりに新しいリポジトリを作成し push しなおしてみた。 詳細は割愛するが、「元のリポジトリが残るというだけ」で元と新しいリポジトリの繋がりをシステム的に確認する方法は見当たらなかった。 (試してみたリポジトリ 元: https://github.com/hankei6km/test-rename-or-fork-fork 新: https://github.com/hankei6km/test-rename-or-fork-fork-1 )
他サービスとの連携
公式の方法で名前を変更した場合、他サービスとの連携がどの程度保たれるかも確認した。
CodeSandbox
CodeSandbox ではコンテナの状態(停止していか等)等で挙動が代わることもありえるので、このメモについては参考程度に。
- ある程度の情報があるリポジトリを用意。今回は https://github.com/hankei6km/test-nextjs-material-ui
- GitHubBox 経由で開き、GitHub サンドボックスを作成する(フォークする)
- PR 作成する手順でコミット(push)する
- リポジトリをリネームする https://github.com/hankei6km/test-nextjs-material-ui
- サンドボックスを開き直す
- GitHub のタブに黄色のドットなどはつかない。また普通にコミット(push)が可能であった。
以上のことから、おそらくリンクはそのまま引き継がれる(リダイレクトされる)。自分の場合は、GitHub サンドボックスはブランチ毎に作りなおすので(ライフサイクルが短い)、この仕様であれば困ることは少なくすみそうと思われる。
Vercel
- Vercel でデプロイできるリポジトリを用意。今回は https://github.com/hankei6km/test-nextjs-material-ui
- Vercel の github アプリ( https://github.com/settings/installations )でインポート対象(アクセス可能)とする
- Vercel でインポートする
- Vercel でデプロイされることを確認する
- 新しい PR ( hankei6km/test-nextjs-material-ui-1#5 )を作成し Preview のデプロイが実行されることを確認する https://test-nextjs-material-ui-13buneiol.vercel.app/mypage
- リポジトリをリネームする https://github.com/hankei6km/test-nextjs-material-ui
- この時点で、Vercel 側でビルドのジョブが走ったりといったことはなかった。
- リポジトリの上記 PR に変更をプッシュしたらビルドが始まる。
- デプロイが完了した https://test-nextjs-material-ui-ggz5u0jee.vercel.app/mypage
- Vercel の github アプリ( https://github.com/settings/installations )で設定を確認すると新しいリポジトリ名でアクセス可能と設定されていた。
以上のことから、各種設定は引き継がれるが、どの程度がリダイレクトにより実現されているのかが不明であるためインポートしなおす方が良いのかもしれない
その他
- 元の名前に戻すことはできるのか? → 設定画面で元の名前を指定もしてもはエラーとはならないが、実際に rename ボタンをクリックはしていないので、詳細は不明
では実際にはどうする?
- 「名前を変更したという記録をシステム的に残しながらリネームする」ということはできなさそうである。
- 公式の変更方法であれば連携されているサービスを含めて影響は極力抑えられている(いつまでリダイレクトされるのか? という不安はあるが)。
以上のことから、「PR などを引き継ぎたくない」といったような状況でなければ、おそらくは公式の変更方法を使うのが良いのでないかと思われる (後日、冒頭で書いたリポジトリをリネームしてみて何かあれば追記するかもしれない)。
License: CC0 1.0 http://creativecommons.org/publicdomain/zero/1.0/deed.ja