はじめに
Gitの移行をしたいと思い,以下を参考にやってみました。
Gitレポジトリを移行する方法
ところが,この方法だと移行先のリポジトリに既にコミットがある場合,上書きされてしまいます。
そのため,移行先のリポジトリにコミットがあった場合でもそのコミットを残して移行できる方法を調べたので,その方法を備忘録として残したいと思います。
手順
- 移行先のリモートリポジトリを作成・ローカルにクローン
- リモートリポジトリに移行元のリポジトリを追加
- 移行元のリポジトリの内容をfetch
- 移行元のmasterブランチの内容を,移行先のmasterブランチにマージ
- 移行先のリポジトリをリモートにプッシュ
移行先のリポジトリをクローン
Github上で新規リポジトリを作成し,ローカルにクローン
$ git clone git@github.com:target-repository.git
$ cd target-repository
リモートリポジトリに移行元のリポジトリを追加
ローカルに存在している移行元のリポジトリをリモートリポジトリとして登録
$ git remote add source /path/to/source-repository
移行元のリポジトリの内容をfetch
移行元のリポジトリの内容を,fetch
コマンドを用いて取得
$ git fetch source
移行元のmasterブランチの内容を,移行先のmasterブランチにマージ
$ git merge --allow-unrelated-histories source/master
-
--allow-unrelated-histories
オプションを用いることで,共通の祖先を持たないブランチ同士を強制的にマージすることができる
移行先のリポジトリをリモートにプッシュ
$ git push -u origin HEAD