项目A的子文件夹中的项目B - 向Project B远程提交本地更改

时间:2012-02-25 16:27:02

标签: git dvcs

假设我是两个远程项目的所有者:MainProjectAppsProject

在本地存储库中,我想在AppsProject的子目录(MainProject)中拥有apps/

我尝试使用subtree merge策略(参考:Pro Git Book
MainProject的目录中。我做到了:

$ git remote add apps-remote git@bitbucket.com:me/apps.git
$ git checkout -b apps-branch apps-remote/master
$ git checkout master
$ git read-tree --prefix=apps/ -u apps-branch
$ git checkout apps-branch
$ git pull

实际上我现在想要的是能够对apps/远程存储库以及AppsProjectapps/远程存储库中没有的任何内容进行本地MainProject更改。

怎么做?

2 个答案:

答案 0 :(得分:2)

创建子模块:

$ cd MainProject
$ git submodule add git@bitbucket.com:me/apps.git apps
$ git commit -a -m "added a submodule"
$ git push

现在克隆全新:

$ git clone --recursive git@bitbucket.com:me/MainProject.git

或者如果你已经在某个地方克隆了它,但在添加子模块之前:

$ git submodule update --init 
#Or without the --init to update the submodule

请记住,当您对子模块进行更改时,首先要在子模块中提交更改,然后在主存储库中提交更改以便进行更改。子模块始终在主仓库中的最后一次提交时冻结。

答案 1 :(得分:1)

我会将内部项目作为子模块。这将允许您将外部项目与其分开处理。