Skip to content

Instantly share code, notes, and snippets.

@hankei6km
Last active October 29, 2020 00:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hankei6km/70f1e386a4911909ce0facd379aa9708 to your computer and use it in GitHub Desktop.
Save hankei6km/70f1e386a4911909ce0facd379aa9708 to your computer and use it in GitHub Desktop.
GibHub でリポジトリの名前を変更する

GitHub でリポジトリの名前を変更する

テストで使っていたリポジトリをそのまま使い続けたくなったため、リポジトリの名前を変更する方法を調べたメモ。

最終的な目標

今回は以下の項目を目標として、その方法を調べる。

  • 付属する情報は引き継ぎたい(PR など)
  • 「名前を変更した」という記録は残したい
  • 外部と連携している情報はそれほど重視しない(Vercel へインポートされたリポジトリなど)

公式の変更方法

少し調べてみると、公式に変更方法があるという情報が出てくる。

https://docs.github.com/ja/free-pro-team@latest/github/administering-a-repository/renaming-a-repository

リポジトリの名前を変更すると、プロジェクトサイトの 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 ではコンテナの状態(停止していか等)等で挙動が代わることもありえるので、このメモについては参考程度に。

以上のことから、おそらくリンクはそのまま引き継がれる(リダイレクトされる)。自分の場合は、GitHub サンドボックスはブランチ毎に作りなおすので(ライフサイクルが短い)、この仕様であれば困ることは少なくすみそうと思われる。

Vercel

以上のことから、各種設定は引き継がれるが、どの程度がリダイレクトにより実現されているのかが不明であるためインポートしなおす方が良いのかもしれない

その他

  • 元の名前に戻すことはできるのか? → 設定画面で元の名前を指定もしてもはエラーとはならないが、実際に rename ボタンをクリックはしていないので、詳細は不明

では実際にはどうする?

  • 「名前を変更したという記録をシステム的に残しながらリネームする」ということはできなさそうである。
  • 公式の変更方法であれば連携されているサービスを含めて影響は極力抑えられている(いつまでリダイレクトされるのか? という不安はあるが)。

以上のことから、「PR などを引き継ぎたくない」といったような状況でなければ、おそらくは公式の変更方法を使うのが良いのでないかと思われる (後日、冒頭で書いたリポジトリをリネームしてみて何かあれば追記するかもしれない)。


License: CC0 1.0 http://creativecommons.org/publicdomain/zero/1.0/deed.ja

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment