如何合并另一个子文件夹中的git子文件夹?

时间:2012-05-22 06:18:57

标签: git

这是我们的git文件夹。

的folder1 / XXX / A / B / C

文件夹2 / YYY / A / B / C

过去,我们可以使用SVN从 folder2 / yyy 合并 folder1 / xxx

是否有可能在Git中做同样的事情?

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是将两个目录设置为子模块/子树(它们已经有一些单独的历史记录/ svn存储库,对吧?)。然后你只需向folder1存储库添加一个指向folder2存储库的遥控器,你就可以合并这些更改,就像它是任何其他遥控器一样:

# go to folder1 repository
cd /path/to/folder1repo
# or `cd folder1` if you are familiar with inline submodule editing caveats
# add a remote pointing to folder2 repo
git remote add folder2 /path/to/repo/folder2
# fetch it
git fetch folder2
# merge folder2 into folder1
git merge folder2/master

唯一需要注意的是,您实际上有一个子模块,每次合并这些文件夹时都必须提交超级项目(因为,例如,folder1将更改,而superproject必须指向不同的提交):

cd /path/to/superproject
git add folder1
git commit -m "Merged folder2 submodule into folder1"

作为子模块的替代,你可以使用forlders的repos的子树合并,设置有点复杂,但是你只需要拉动更新所有这些子树:)

这是一个很好的子树教程: http://nuclearsquid.com/writings/subtree-merging-and-you/

顺便说一句。你可以创建一个完全不同的项目的远程,你可以使用简单的合并将它的代码与你的代码合并:) git使用场景是无限的:)