我在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/
,但所有这一切都会产生冲突。有没有一种方法可以做我正在尝试的事情?
答案 0 :(得分:2)
如果可以的话会更好:
lib
,app1
,app2
app1
repo中添加 submodule 对lib
repo app2
repo中添加 submodule 对lib
repo 这样,每个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>
完成此操作后,确认您的存储库看起来不错,只需要推送您当前的分支。