Gitで異なるリポジトリにブランチを移動する方法
過去にTortoiseGitを使った方法を書きましたが、今回はGit Bash(CUI)を使った方法です。
- まず、対象のリポジトリをローカルにクローンする
(今回はrepobaseにクローン)git clone <リモートリポジトリ> repobase
- クローンしたローカルのリポジトリに移動し、対象のブランチに切り替える
cd repobase git switch <ターゲットブランチ>
- 対象のブランチ名を
main
に変更するgit branch -M main
-
リモートリポジトリ(一般的には
origin
)を削除するgit remote rm origin
ひとつ上のディレクトリに戻り、リポジトリをベアリポジトリとしてクローンする
git clone --bare repobase repobase.git
これで、main
ブランチのみクローンされたベアリポジトリが作成されます。
不要なリポジトリの確認と削除
- 確認のため、クローンしたベアリポジトリからクローンを行う
(今回はrepobase-workにクローン)git clone repobase.git repobase-work
-
次のコマンドを実行し、
main
以外のリポジトリがないか確認するcd repobase-work git branch -a
ここで、不要なリモートのmaster
リポジトリなどがあれば削除します。
git push origin :master
本作業はrepobaseディレクトリでは絶対に行わないでください。元のリポジトリからも消えてしまいます。
ベアリポジトリを新しいリモートリポジトリとして登録する
ベアリポジトリに移動し、ベアリポジトリをリモートにコピーします。Localプロトコルの場合はディレクトリのコピーでも構いません。
cd repobase.git
git push --mirror <リモートURL>