项目中有多个git存储库,只将代码拉/推送到相应的存储库

时间:2014-03-16 13:24:12

标签: git

大家好,我一直想知道这是否可行?我已经思考了好几个小时,我不能把头缠在它上面!

要求:
我想在项目中处理多个git存储库,并仅将代码推送到相应的存储库。

以下是概述:
我正在处理多个项目,这些项目都使用我自己构建的相同自定义库。因此,我为自定义库创建了一个git存储库,并为每个项目创建了单独的存储库。

我创建了以下存储库:
lib:自定义库
答:项目A
B:项目B

项目A的设置:

git init
git remote add origin 
git remote add library 
git pull origin master
git pull library master

现在在对项目A代码进行更改之后,当我尝试推送它时 git push origin master 然后库代码和项目代码都被推送到存储库A.
但我想只将项目代码推送到存储库A.

我也尝试过使用分支并使用以下命令:

git checkout -b library
git pull library library

我也试过了 git pull library library:master

但是收到以下错误:

fatal: The remote end hung up unexpectedly

3 个答案:

答案 0 :(得分:0)

您需要将存储库分隔为" git submodules。"这允许您在项目中保留多个存储库,并且只有特定项目的代码才会被推送到其各自的远程。

这里需要注意的是每个子模块必须完全包含在子目录中。子模块中的文件不能混合在一起。

答案 1 :(得分:0)

划分库代码和项目代码听起来不错,但是将它们拉到同一个本地存储库中是行不通的。 (在这种情况下,您必须决定是否要从一个或另一个存储库中检出提交,并且您不能同时在两个存储库中工作。)

您确实需要将它们保存在单独的本地存储库中。要组合它们,您可以使用子模块,子树,git-repogitslave或某些自定义或语言特定方式(mvn,rubygems等)来引用库代码。

可能最好的方法是向google提出一些建议。

答案 2 :(得分:0)

关注gitignore。我相信你应该能够为这两个项目制作一个gitignore并列出要忽略的文件(与库相关的文件)