~/repo1 と ~/repo2 をまとめる
2つのリポジトリをまとめて1つのリポジトリにしたいとき。
cd ~/repo1
git remote add repo2 ~/repo2
git fetch repo2
git merge repo2/master
~/repo1/subdir に ~/repo2 を入れる
あるリポジトリのサブディレクトリに別のリポジトリの中身を入れたいとき。たとえば、あるリポジトリのサブディレクトリを切り出して別のリポジトリとして管理しているものを、元のリポジトリに合流させたいとき。
cd ~/repo1
git remote add repo2 ~/repo2
git fetch repo2
# サブディレクトリの内容に repo2 の内容をマージする
# (repo2 と内容が似ているサブディレクトリを自動で判別)
git merge -s subtree repo2/master
# ↑でうまくいかないときにはパスを指定する↓
git merge -X subtree=subdir repo2/master
# そもそも ~/repo1/subdir が存在しないときには↓
git read-tree --prefix=subdir/ repo2/master
git checkout -- .
~/repo1/dir1 と ~/repo1/dir2 をマージする
(タイトルからは外れるが)同一リポジトリ内の2つのサブディレクトリをマージしたいとき:http://qiita.com/uasi/items/545665066619d8cb8dbe
~/repo1/subdir を ~/repo2 として切り出す
あるリポジトリのサブディレクトリを別のリポジトリとして管理したいとき。
git clone ~/repo1 ~/repo2
cd ~/repo2
git filter-branch --subdirectory-filter subdir HEAD
余談:ここで git clone
の代わりに git-new-workdir
を使ってはいけない(コメント参照)
参考にしたページ: