project2
内のすべてを最初にサブディレクトリに移動し、project2
の変更されたリポジトリをproject1
にマージするだけです。
あなたはproject1
に支店PROJECT1_BRANCH
にサブモジュールとしてproject2
に支店PROJECT2_BRANCH
の内容と歴史をマージしたいと仮定すると:
git clone /project1/project2 ~/tmp_project2
cd ~/tmp_project2
git checkout PROJECT2_BRANCH
mkdir project2
# The following line requires bash, it will not work in a POSIX shell.
# It basically "git mv"s into project2 everything except .git and project2
git ls-tree --name-only -z HEAD|{ while read -d '' f; do git mv "$f" project2; done; }
git commit -m "Moved everything into a new subdirectory project2"
git clone /project1 ~/project1_merged_with_project2
cd ~/project1_merged_with_project2
git checkout PROJECT1_BRANCH
git remote add proj2 ~/tmp_project2
git pull proj2 PROJECT2_BRANCH
git remote remove proj2
rm -rf ~/tmp_project2
[複数のgitリポジトリを1つにマージして分岐履歴を保持する]の可能な複製(http://stackoverflow.com/questions/26502970/merge-multiple-git-repositories-into-one-keeping-branches-history) – dmlittle
私の場合、2つのgitリポジトリは同じフォルダレベルにありません – ed5978
project2にブランチがありますか?はいの場合、ブランチの履歴も気になりますか? – Leon