Help us understand the problem. What is going on with this article?

Git で複数のリポジトリをまとめたり、逆に切り出したりする

More than 5 years have passed since last update.

~/repo1 と ~/repo2 をまとめる


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 をマージする


~/repo1/subdir を ~/repo2 として切り出す


git clone ~/repo1 ~/repo2
cd ~/repo2
git filter-branch --subdirectory-filter subdir HEAD

余談:ここで git clone の代わりに git-new-workdir を使ってはいけない(コメント参照


レシピサービスを開発しています。 Qiita, Qiita:Team, Qiita Jobs を開発していました。趣味では Rust とシェルスクリプトをよく書きます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away