我有一个3个项目,我想分叉。它们都是相互关联的 - 改变一个可能需要改变另一个。因为它们都是相关的,所以我想为叉子创建一个存储库,同时保持从每个原始的下拉更新的能力。如何使用git将多个项目分叉到一个存储库中?
我该如何设置我的git存储库?
这些都是初步的想法,所以如果这是疯狂的/愚蠢的我不会感到惊讶。是吗?
我有一个3个项目,我想分叉。它们都是相互关联的 - 改变一个可能需要改变另一个。因为它们都是相关的,所以我想为叉子创建一个存储库,同时保持从每个原始的下拉更新的能力。如何使用git将多个项目分叉到一个存储库中?
我该如何设置我的git存储库?
这些都是初步的想法,所以如果这是疯狂的/愚蠢的我不会感到惊讶。是吗?
你总是可以使用“git remote add <name> <url>
”来添加更多的源作为源。
如何获取/合并某个目录中的文件的源代码。 (这很难解释)。更明确的说:如果我有文件夹“proj1”和“proj2”,分别为每个远程文件夹,我如何告诉远程proj2上的获取其源代码为/ prog2? – 2009-11-12 02:50:30
'subtree' merge ...或** submodules ** – 2009-11-12 09:32:15
有一种可能性,我从来没有尝试过“真实”,但这可能会奏效。
比方说,你有三个项目创造性地命名为Proj1,Proj2与(猜)Proj3。我们还要说全部或部分依赖于外部库,例如名为Lib1.dll和另一个名为SuperLib.dll。
首先,文件夹结构,我会做一些事情,如:
MyCode\
build_all.bat
Docs\
[...]
Libs\
Lib1.dll
SuperLib.dll
Proj1\
[...]
Proj2\
[...]
Proj3\
[...]
,那么你会在每个ProjX文件夹中创建一个存储库:
cd \MyCode\Proj1
git init
cd \MyCode\Proj2
git init
cd \MyCode\Proj3
git init
然后,你将创建一个库为整个事情:
cd \MyCode
git init
这个资料库的内容,对于git的,将是Libs
文件夹及其内容,build_all.bat
构建脚本和3个子项目。
所以,一旦你改变你的源代码,比如说Proj1\Main.cs
,整件事情不会看到修改。你将不得不对Proj1,然后你会去整个事情然后git commit
它(现在git将能够看到,Proj1已被修改)。
使用这种方法,整个事情的历史只会声明何时ProjX被修改,但它不会直接跟踪单个文件。如预期的那样,ProjX上的存储库将像往常一样跟踪每个文件。
如果你试试一个“真正的项目”,让我知道结果!
祝你好运!
嗯,git命令将如何知道“整个事物”和每个子回购之间的区别?我怀疑它可能会有点困惑。你之前试过回购仓库吗? – 2009-11-12 02:46:27
它不会感到困惑:在寻找repo时,git会查看当前目录;如果里面没有“.git”目录,它将上升一级,再次查找存储库(“.git”目录),直到找到第一个存储库。所以,你是安全的。 – 2009-11-12 09:05:15
酷!这确实是一个选择。 – 2009-11-12 14:42:18
您可能会想要获得git-submodule的功能。从here报价:
Git的子模块支持允许 存储库包含作为 子目录,一个 外部项目的结算。子模块维护自己的身份 ;子模块 支持只是存储的子模块 仓库的位置和提交ID,所以 谁克隆 含项目(“上层项目”)其他开发商 可以轻松克隆所有子模块在 同一版本。部分结账 的超级项目是可能的:你可以告诉Git克隆没有,一些或 所有的子模块。
看起来像创建一个子模块将把每个项目看作是独立的。不幸的是,我希望所有这些合并。在子模块的手册页上(感谢您在这里指出),它建议使用远程和“子树合并”策略。我要深入了解并报告。 – 2009-11-12 02:57:14
这是git-submodule文档的更新链接: http://git-scm.com/book/en/Git-Tools-Submodules – 2012-05-09 10:34:34
我想我应该使用subtree merge strategy。我将不得不实际尝试一下,看看它是否正常。如果事实证明这是一个好方法,我会将这个答案标记为已接受。
与此同时,我仍然乐于提供建议。
你能否详细说明为什么你想为你的3个不同的但相关的项目单个存储库? – 2009-11-11 22:30:17
我的意思是:你想达到什么目的?请记住,git与SVN或CVS完全不同,例如... – 2009-11-11 22:31:44
而不是单独构建每个(并按正确的顺序),我想让它们成为同一构建过程的一部分。由于它们都必须在一个范围内,因此一个存储库对我来说是有意义的。任何其他想法?此外,我打算在这种情况下拥有自己的项目(依赖于这些项目)。 – 2009-11-11 22:49:01