■ はじめに
あるプロジェクトで管理していたGithubのリポジトリを 別のGithubのリポジトリに移動する必要がでてきたので 調べてみた。
目次
【0】移行方法 【1】--mirrorオプションを使用する方法 1)手順 2)サンプル 3)補足1:--mirrorオプションについて 【2】リポジトリのpush先を変更する方法 1)手順 2)サンプル 3)補足1:リモートURLについて 【3】トラブル
【0】移行方法
https://tsujitaku50.hatenablog.com/entry/2017/01/08/200155
より、以下の方法が考えられる。 1)--mirrorオプションを使用する方法 2)リポジトリのpush先を変更する方法 3)公式ドキュメントに沿って移行する方法
【1】--mirrorオプションを使用する方法
* 調べると真っ先に出てくる方法。
1)手順
Step1: 移行元リポジトリをローカルにミラークローンする Step2: クローンしたディレクトリに移動する Step3: Step1を移行先Gitリポジトリへpushする
2)サンプル
移行ケース
* 移行元リポジトリURL => https://github.com/source/your-repository1.git * 移行先リポジトリURL => https://github.com/destination/your-repository2.git
コマンド例
# Step1: 移行元リポジトリをローカルにミラークローンする # git clone --mirror <移行元GitリポジトリURL> git clone --mirror https://github.com/source/your-repository1.git # Step2: クローンしたディレクトリに移動する # => cd <repository> cd your-repository1.git # Step3: Step1を移行先Gitリポジトリへpushする # git push --mirror <移行先GitリポジトリURL> git push --mirror https://github.com/destination/your-repository2.git
3)補足1:--mirrorオプションについて
ミラーリポジトリを作成する
ミラーリポジトリとは?
* ワーキングディレクトリが存在しないリポジトリで 更新履歴やタグなどといったGit情報のみを保持しているリポジトリ
ベアとの違い
https://git-scm.com/docs/git-clone/ja
より抜粋 ~~~~~ --bare と比較して、 --mirror は、 ソースのローカルブランチをターゲットのローカルブランチに マップするだけでなく、すべての参照 (リモートトラッキングブランチ、メモなどを含む)をマップし、 ターゲットリポジトリの git remote update によって これらのrefがすべて上書きされるようにrefspecの設定を行います。 ~~~~~ => 分かったようなわからないような、、、
【2】リポジトリのpush先を変更する方法
* 今回は、メインブランチのみ移行するものとする => ブランチなど全てを移行したい場合は、以下のURLを参照のこと
https://tsujitaku50.hatenablog.com/entry/2017/01/08/200155
1)手順
Step1: 移行元リポジトリをcloneする Step2: pushする先を変更する Step3: Step1を移行先Gitリポジトリへpushする
2)サンプル
# Step1: 移行元リポジトリをcloneする # git clone <移行元GitリポジトリURL> git clone https://github.com/source/your-repository1.git # Step2: pushする先を変更する cd your-repository1 # => git remote set-url origin <移行先GitリポジトリURL> git remote set-url origin https://github.com/destination/your-repository2.git # 変更できたかどうか確認(移行先ならOK) git remote -v origin https://github.com/destination/your-repository2.git (fetch) origin https://github.com/destination/your-repository2.git (push) # Step3: Step1を移行先Gitリポジトリへpushする # git push <移行先GitリポジトリURL> git push https://github.com/destination/your-repository2.git
3)補足1:リモートURLについて
* リモートリポジトリ(e.g. github上のリポジトリ)のURL
リモートURLの確認
$ git remote -v origin https://github.com/xxxxx/hello-world.git (fetch) origin https://github.com/xxxxx/hello-world.git (push)
リモートURLを変更
$ git remote set-url origin <変更先URL>
【3】トラブル
* 以下にまとめておく。
Git 移行時におけるトラブル
https://dk521123.hatenablog.com/entry/2022/02/02/000000
参考文献
https://pasomaki.com/git-move/
https://qiita.com/orange5405/items/783b74667bcc69a34a52
https://howpon.com/6427
https://tsujitaku50.hatenablog.com/entry/2017/01/08/200155
https://qiita.com/ysti/items/be67a6e3c5754fac088a
関連記事
Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
Github の リモート先が変更した際の対応
https://dk521123.hatenablog.com/entry/2021/02/04/141854
リポジトリを別のGitに移行するシェル
https://dk521123.hatenablog.com/entry/2023/02/15/173618
Git 移行時におけるトラブル
https://dk521123.hatenablog.com/entry/2022/02/02/000000