AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

既に存在するリポジトリの内容を別リポジトリに push する (fork ではない)

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

気をつけること

githubGUI 上でリポジトリ作ると .gitignoreREADME.md を自動生成しがちなので、たいだいの場合でこれが衝突する。 基本的に merge はされないので、 vi で開いていい感じにするか、 repoB 側の記述全部消すとかそういう対応でいきましょう。

ちなみにこの手順でやると、過去の履歴も全部持ってこれます。 履歴必要ないならもっと単純で、 clone したあと .git を除いたファイル群を、新しいリポジトリに push するだけでも良いと思います。

heroku や Slack など、外部へのインテグレーション設定されている場合は、設定を確認しましょう。 最近は機密情報をリポジトリ側に入れないようになっているので、インテグレーション先サービスで認証認可ふくめて、設定されているとは思います。

あとは dependabot とか動かしてたら、引き続き動かすか止めるかは repoB 側の設定なので注意するのはそれくらいかなあ。