我使用svn:externals从另一个SVN存储库中使用了两个SVN项目.
我怎样才能在Git中拥有相同的存储库布局结构?
Git有两种类似的方法,但不完全等同于svn:externals:
Subtree merges insert the external project's code into a separate sub-directory within your repo. This has a detailed process to set up and then is very easy for other users, because it is automatically included when the repository is checked out or cloned. This can be a convenient way to include a dependency in your project.
It is easy to pull changes from the other project, but complicated to submit changes back. And if the other project have to merge from your code, the project histories get merged and the two projects effectively become one.
Git子模块(手动)链接到另一个项目的存储库中的特定提交,就像带有-r
参数的svn:externals一样.子模块易于设置,但所有用户都必须管理子模块,子模块不会自动包含在结帐(或克隆)中.
尽管将更改提交回其他项目很容易,但如果更改了回购,这样做可能会导致问题.因此,将更改提交回正在开发的项目通常是不合适的.
正如我在" Git子模块新版本更新 "中提到的,您可以使用Git 1.8.2子模块实现相同的SVN外部功能:
git config -f .gitmodules submodule..branch
这足以使子模块跟随分支(如子模块上游repo的远程分支的LATEST提交).你需要做的就是:
git submodule update --remote
这将更新子模块.
更多细节在" git submodule
追踪最新 ".
要将现有子模块转换为跟踪分支的一个子模块:请参阅" Git子模块:指定分支/标记 "中的所有步骤.