Gitで別々に作ってたリポジトリをコミットログを残したまま1つにしてしまいたい時のめも。
例えばkankore_repo
とkuchikukan_repo
という2つのリポジトリが別々にあったとします。
これらを別々のリポジトリで管理するのが大変になってきたのでkankore_repo
内の'destroyer'ディレクトリに
kuchikukan_repo
で管理していた全てをコミットログを残したまま入れてしまいたい。そんな感じです。
図で書くと
/kankore # kankore_repo リポジトリのあるディレクトリ |--- .git /kuchikukan # kuchikukan_repo リポジトリのあるディレクトリ |--- .git
これを ↓ のような感じにしたいのです!
/kankore # kankore_repo リポジトリのあるディレクトリ |--- .git |--- /destroyer # kuchikukan_repo リポジトリの内容をこのディレクトリ内に移したい
1. 下準備
kuchikukan_repo
を入れるディレクトリがなかったら作っておきます。
# kankore_repo リポジトリのあるディレクトリに移動 cd ~/kankore # destroyer ディレクトリを作成 mkdir destroyer # 空 destroyer ディレクトリをgitに追加できるように.gitkeepを作成 touch destroyer/.gitkeep # コミットさん git add -A destroyer git commit -m "create destroyer dir"
2. 取り込むリポジトリをリモートリポジトリとして追加する
取り込みたいkuchikukan_repo
をkankore_repo
のリモートリポジトリに追加します。
# kankore_repo リポジトリのあるディレクトリに移動 cd ~/kankore # kuchikukan_repo をリポジトリ名 kuchikukan とてリモートリポジトリに追加 # git remote add <リポジトリ名> <リポジトリのあるURL> git remote add kuchikukan ~/kuchikukan
※ 今回はkuchikukan_repo
リポジトリがローカル環境の~/kuchikukan
ディレクトリ内にある想定です。 GitHubやBitbucketなどにある場合はそのURLを指定すれば大丈夫だと思います。
3. ディレクトリを指定して取り込む
destroyer
ディレクトリにkuchikukan_repo
の内容を取り込みます。
# kankore_repo リポジトリのあるディレクトリに移動 cd ~/kankore # ディレクトリを指定して kuchikukan_repo の master ブランチを取り込んでマージ git merge -X subtree=destroyer kuchikukan_repo/master
これでkuchikukan_repo
で管理していた駆逐艦ちゃんの情報がkankore
リポジトリのdestroyer
ディレクトリにコミットログを保持したまま移すことができました!やったね。
直ぐにマージしたくないとかだとこの部分が少し違う手順になるかと思います。(しっかり調べてませんスミマセン…
[参考]
- Git で複数のリポジトリをまとめたり、逆に切り出したりする - Qiita
- Gitで別のリポジトリをサブディレクトリに取り込んで完全に吸収してしまいたい - QA@IT
- リモート操作 | 逆引きGit | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
- Git - サブツリーマージ
- git サブツリーマージを使って他のプロジェクトのソースコードを使う。 - 言語ゲーム

figma 艦隊これくしょん -艦これ- 雪風 ノンスケール ABS&ATBC-PVC製 塗装済み可動フィギュア
- 出版社/メーカー: Max Factory
- 発売日: 2015/10/29
- メディア: おもちゃ&ホビー
- この商品を含むブログ (9件) を見る