0

这是我们的 git 文件夹。

文件夹1/xxx/a/b/c

文件夹 2/yyy/a/b/c

过去,我们可以使用 SVN 将folder1/xxxfolder2/yyy合并。

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

4

1 回答 1

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 将更改并且超级项目必须指向不同的提交):

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

作为子模块的替代方案,您可以使用两个 forlders 存储库的子树合并,设置有点复杂,但是您只需拉更新所有此类子树 :)

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

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

于 2012-07-20T08:51:44.340 回答