Git

複数の Git repository の履歴を保持したまま 1つの Git repository を統合する

はじめに

  • Git repository の履歴を保持したまま複数の repository を1つにまとめる作業をした
  • 自身の作業ログ扱いだが履歴として残しておく

Git repository の統合

  • repo1, repo2 を repo にまとめる
.
├── repo
| └ .git
├── repo1
| └ .git
└── repo2
  └ .git

となっているのを

.
└── repo
  └ .git
  └ repo1
  └ repo2

に変更する

### 手順

  • repo 内に repo1 ディレクトリを作成、何かしらのファイルを作成しておく
    • 今回作成したファイルは .gitkeep とした
  • remote に移行元を追加、fetch しておく
  • git merge --allow-unrelated-histories -X で merge する
cd repo
git co -b import-repo1
mkdir repo1
touch repo1/.gitkeep
git remote add import-repo1 git@github.com:mziyut/repo1.git
git fetch import-repo1
git merge --allow-unrelated-histories -X subtree=repo1 import-repo1/master