Gitで異なるリポジトリにブランチを移動する方法

過去にTortoiseGitを使った方法を書きましたが、今回はGit Bash(CUI)を使った方法です。

  1. まず、対象のリポジトリをローカルにクローンする
    (今回はrepobaseにクローン)
    git clone <リモートリポジトリ> repobase
    
  2. クローンしたローカルのリポジトリに移動し、対象のブランチに切り替える
    cd repobase
    git switch <ターゲットブランチ>
    
  3. 対象のブランチ名をmainに変更する
    git branch -M main
    
  4. リモートリポジトリ(一般的にはorigin)を削除する
    git remote rm origin
    
  5. ひとつ上のディレクトリに戻り、リポジトリをベアリポジトリとしてクローンする
    git clone --bare repobase repobase.git
    

これで、mainブランチのみクローンされたベアリポジトリが作成されます。

不要なリポジトリの確認と削除

  1. 確認のため、クローンしたベアリポジトリからクローンを行う
    (今回はrepobase-workにクローン)
    git clone repobase.git repobase-work
    
  2. 次のコマンドを実行し、main以外のリポジトリがないか確認する
    cd repobase-work
    git branch -a
    

ここで、不要なリモートのmasterリポジトリなどがあれば削除します。

git push origin :master
本作業はrepobaseディレクトリでは絶対に行わないでください。元のリポジトリからも消えてしまいます。

ベアリポジトリを新しいリモートリポジトリとして登録する

ベアリポジトリに移動し、ベアリポジトリをリモートにコピーします。Localプロトコルの場合はディレクトリのコピーでも構いません。

cd repobase.git
git push --mirror <リモートURL>
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です