我和SVN一直工作到今天,所以我对git的高级功能不是很熟悉。
我想克隆包含我在项目中使用的一些文件的repo。 我的项目是自己的目录,所以当我提交文件时,他们会进入我的项目。如果我改变它们,它们也会在我的项目中提交。
但是,我希望它们被视为对我从中获取它的回购请求。
在SVN中,我使用了svn-externals。我怎样才能在git中做到这一点,以便保持简单?
答案 0 :(得分:2)
您可以使用git submodule
。
最新版本的git现在允许git子模块跟踪子模块存储库的最新提交。
Git1.8.2:
“
git submodule
”开始学习一种与远程分支的尖端集成的新模式(而不是与超级项目的gitlink中记录的提交集成)。
# add submodule to track master branch
git submodule add -b master [URL to Git repo];
# update your submodule
git submodule update --remote
从手册页:
--remote
此选项仅对
update
命令有效 不使用超级项目记录的SHA-1来更新子模块,而是使用子模块远程跟踪分支的状态。
这接近于svn external
通常的行为。
答案 1 :(得分:0)
还有sub-trees。
我在子模块中找到的主要优点是子模块可以修改文件夹中的内容并从同一个父repo向上推回,尽管正确推送子树中文件的命令是不同的(git子树push -P ......)
克隆父repo的其他人也可以获得所有内容而无需自己处理子树命令。我认为对于子模块,每个人都需要设置它们并单独管理它们。