假设我是两个远程项目的所有者:MainProject
和AppsProject
。
在本地存储库中,我想在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/
远程存储库以及AppsProject
到apps/
远程存储库中没有的任何内容进行本地MainProject
更改。
怎么做?
答案 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)
我会将内部项目作为子模块。这将允许您将外部项目与其分开处理。