【发布时间】:2013-12-03 16:10:17
【问题描述】:
我在 git 上有mainProject,还有一个shared library。
这个shared library也在subProject中。
我的工作流程
我通过克隆项目开始我的项目并创建一个分支:
git clone https://github.com/user/mainProject.git main-project
git checkout -b fix
我在 mainProject 上工作,并在文件夹 lib/(shared library 的根目录)中添加了一个 awesomeClass.php
新的文件结构:
/index.php
/page1.php
/lib/form/contact.php
/lib/awesomeClass.php*
*=新
在此之后我添加并提交我的更改。
git add lib/awesomeClass.php
git commit -m "added new awesome class that will blow your mind"
添加shared library的远程位置,获取它并将远程连接到本地分支
git remote add sharedlib https://github.com/user/sharedlib.git
git fetch sharedlib
git checkout -b sharedlib sharedlib/master
这会将我的分支切换到sharedlib,我尝试将我的更改合并到其中,以将shared library 的相同更改添加到我的子项目中。
git merge --squash -s subtree --no-commit fix
这是出错的地方,文件结构是(从sharedlib分支角度看):
/lib/form/contact.php
/lib/awesomeClass.php
合并后:
/lib/form/index.php*
/lib/form/page1.php*
/lib/form/lib/form/contact.php*
/lib/form/lib/awesomeClass.php*
/lib/form/contact.php
/lib/awesomeClass.php
*=新
谁能解释我如何只将shared library 而不是完整的mainProject 合并到错误的文件夹中?
谢谢!
【问题讨论】:
-
为什么
sharedLib的所有文件都在lib文件夹下?这不应该只存在于mainProject中以便将sharedLib与存储库的其余内容分开吗? -
不确定您如何处理您的
sharedLib,但以防万一本文解释了一种可能的策略:git-scm.com/book/ch6-7.html -
我用过这个:Nested libraries submerge。这篇文章只工作一次。在
sharedLib的第一次合并/更新后,它只会合并/更新到错误的文件夹。例如。就像文件夹中的上述解释lib/form而不仅仅是lib/.. 我试过你的文章,但在合并步骤也是如此。
标签: git github merge git-subtree