你可能想看看Git的submodule支持。子模块可以让你在另一个git仓库中嵌入一个git仓库。这类事情有alternative solutions,但我自己没有用过。
一个例子可能是这样的:
$ 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"
如果您克隆与子模块的存储库,您需要使用--recursive
选项:
$ git clone --recursive git://<repository-with-submodules>.git
或者,您可以定期克隆和然后运行:
$ git submodule init
$ git submodule update
阅读链接文档(和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"
的最后一步是必要的,因为混帐保持特定犯了一个给定的子模块相关的记录(这样,当任何人克隆父母,他们将获得该子模块的版本,而不是其最新版本,该版本可能会发生破坏性更改,从而阻止其按照预期与父库一起工作)。因此,如果更新子模块,则需要在父级中记录新的提交。
如果您在framework
子模块内进行了更改,您将再次使用git push
,就像您使用其他存储库一样。然后您必须在父模块中提交新版本。
完美,所以当对框架进行更改时,我该如何将它们拉入项目中,现在它已成为模块?另外,如果我对Framework进行更改而不是项目,那么如何将这些更改回到Framework git库中? – Justin 2012-04-26 00:23:21
我已经更新了我的答案。 – larsks 2012-04-26 00:25:58
一个小纸条。子模块HEAD已分离,因此您需要小心在子模块中进行更改。创建一个分支(或切换到分支),进行更改,提交然后推送。 – GoZoner 2012-04-26 03:10:32