我有两个Git仓库,说PROJECT1和项目2和项目2位于PROJECT1的子文件夹:如何合并2个git存储库?
/project1/.git (with contents of project2/ ignored)
/project1/project2/.git
我想知道我怎么能合并项目2到PROJECT1,用相同的文件夹结构,但保持project2的历史?
我有一个简单的解决方案吗?
我有两个Git仓库,说PROJECT1和项目2和项目2位于PROJECT1的子文件夹:如何合并2个git存储库?
/project1/.git (with contents of project2/ ignored)
/project1/project2/.git
我想知道我怎么能合并项目2到PROJECT1,用相同的文件夹结构,但保持project2的历史?
我有一个简单的解决方案吗?
,我搬到项目2到一个临时文件夹,然后:
git subtree add -P project2 ~/tmp_project2 PROJECT2_BRANCH
做得很好。
我只是先将project2
中的所有内容移动到一个子目录中,然后简单地将project2
修改后的存储库合并到project1
中。
假设你想在project2
作为子模块合并分支PROJECT2_BRANCH
的内容和记录到分支PROJECT1_BRANCH
在project1
:最后
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
好的,理解。我会试试这个。谢谢 – ed5978
[将多个git存储库合并为一个,保留分支机构历史记录](http://stackoverflow.com/questions/26502970/merge-multiple-git-repositories-into-one-keeping-branches-history) – dmlittle
在我的情况下,这两个git仓库不在同一个文件夹层面 – ed5978
项目2中是否有分支机构,如果是的话,您是否也关注这些分支机构的历史? – Leon