Jus*_*tin 10 git version-control git-merge git-fetch
所以我有两个git回购.第一个是我们的框架(想想数据库抽象,函数),然后是我们新项目的另一个git repo.
我想将框架git repo包含到项目git中,并且根据GitHub帮助,这应该工作:
cd /project
git remote add framework git://github.com/username/Framework.git
git fetch framework
git merge framework/master
Run Code Online (Sandbox Code Playgroud)
问题是,当我进行合并时,它会从框架中提取所有文件,并将它们简单地转储到项目的根目录中.相反,我们怎样才能将框架文件合并到子目录中/project/framework/?
lar*_*sks 23
您可能想要了解Git的子模块支持.子模块允许您在另一个git存储库中嵌入一个git存储库.对于这类事情有其他解决办法,但我自己并没有使用它们.
示例可能如下所示:
$ git clone git://github.com/username/project.git
$ cd project
$ git submodule add git://github.com/username/framework.git framework
$ git commit -m "added framework submodule"
Run Code Online (Sandbox Code Playgroud)
如果要使用子模块克隆存储库,则需要使用以下--recursive选项:
$ git clone --recursive git://<repository-with-submodules>.git
Run Code Online (Sandbox Code Playgroud)
或者,您可以定期克隆然后运行:
$ git submodule init
$ git submodule update
Run Code Online (Sandbox Code Playgroud)
阅读链接文档(和git submodule --help)以获取更多信息.
如果对子模块进行了更改,则将它们带入:
# first update the submodule just like any other git repository
$ cd project/framework
$ git pull
# now you have to record the new commit in the parent repository
$ cd ..
$ git commit -m "updated framework submodule"
Run Code Online (Sandbox Code Playgroud)
最后一步是必要的,因为git会保留与给定子模块关联的特定提交的记录(这样当任何人克隆父级时,他们将获得该子模块的版本,而不是其最新版本,这可能是经历了一些重大变化,这些变化会阻止它与父存储库一起工作.因此,如果更新子模块,则需要在父模块中记录新提交.
如果您在framework子模块中进行更改,您将再次git push像使用任何其他存储库一样.然后,您必须在父模块中提交新修订.
| 归档时间: |
|
| 查看次数: |
5612 次 |
| 最近记录: |