如何将GIT中的2个分支合并到一个包含2个文件夹的分支中

时间:2014-10-16 06:05:28

标签: git merge

我在git repo中有一个应用程序,但它最终是一类应用程序。所以我的计划是建立一个像

这样的文件夹结构
lib/ - common to all
app1/
  lib/ - link to above folder
app2/ 
  lib/ - link to above folder
...

目前正是

lib/ 
other code right here

我们有一个单独的分支,它正在变成这类应用程序的第二个。所以我想按照上面的说明对Repo进行重组,如果可能的话不会丢失提交。 我在master上进行了重组,但我不确定如何合并。我试图将分支重组为app2/,但所有这一切都会产生冲突。有没有一种方法可以做我正在尝试的事情?

2 个答案:

答案 0 :(得分:2)

如果可以的话会更好:

这样,每个app repos都会引用lib repo的确切版本。

答案 1 :(得分:1)

如果子模块不是答案,而你真的想合并一些git repos,答案其实很简单。

git filter-branch --tree-filter 'if [ -f old ]; then mkdir dir && mv old dir/new; fi' HEAD

使用一些树形滤波器逻辑,在每个APP1和APP2 repos上,你可以将它们塑造成看起来完全像你以后合并它们时所需的样子。

然后,您可以从主回购中

git remote add remote1 <url to app 1 repo>
git fetch --all
git merge remote1/<branch>

git remote add remote2 <url to app 2 repo>
git fetch --all
git merge remote2/<branch>

完成此操作后,确认您的存储库看起来不错,只需要推送您当前的分支。