fork すればいいじゃん? みたいに言われるんだけど、 移行元と移行先が private 同士の時 fork できたっけ? というのと、基本的に移行元と移行先で同期を取りたいわけではない (完全に暖簾分けしたい) という感じだったので。
こうする
repoA の master
を repoB の master
に持ち込む場合。
git clone https://github.com/example/repoA.git cd repoA git remote add repoB https://github.com/example/repoB.git git pull repoB master git add . git commit -m "repoA の master から分岐 (fork ではない)" git remote rm repoB git push origin master
移行元と移行先でブランチが違う場合
repoA の master
を repoB の main
に持ち込む場合。
git clone https://github.com/example/repoA.git cd repoA git remote add repoB https://github.com/example/repoB.git git pull repoB --allow-unrelated-histories main git add . git commit -m "repoA の master から分岐 (fork ではない)" git remote rm repoB git push origin master
気をつけること
github の GUI 上でリポジトリ作ると .gitignore
や README.md
を自動生成しがちなので、たいだいの場合でこれが衝突する。
基本的に merge はされないので、 vi で開いていい感じにするか、 repoB 側の記述全部消すとかそういう対応でいきましょう。
ちなみにこの手順でやると、過去の履歴も全部持ってこれます。
履歴必要ないならもっと単純で、 clone したあと .git
を除いたファイル群を、新しいリポジトリに push するだけでも良いと思います。
heroku や Slack など、外部へのインテグレーション設定されている場合は、設定を確認しましょう。 最近は機密情報をリポジトリ側に入れないようになっているので、インテグレーション先サービスで認証認可ふくめて、設定されているとは思います。
あとは dependabot とか動かしてたら、引き続き動かすか止めるかは repoB 側の設定なので注意するのはそれくらいかなあ。