您可以通过分支机构或文件夹逃避这一点,但它是子模块的主要候选国际海事组织。我用它们来做这种事情。下面是一组3个回购的例子:
common/ (bare repo of common files)
.git/
wp7/ (regular repo of wp7 specifics)
.git/
common/ (submodule)
wp8/ (same as wp7, but for wp8)
.git/
common/ (submodule)
为了使常见的一种,你会只是采取正规回购和git clone --bare repo optional_bare_repo_name
。如果你不给它一个名字,它会将common
克隆到一个名为common.git
的文件夹中,该文件夹是裸露的版本。现在你可以从wp repo内git subdmodule add path/to/common optional_folder_name
(它使用repo文件夹名称,如果你没有指定)。这有效地将常见的回购克隆到每个wp回购中的文件夹中。这些也可以是单个回购的分支;您只需在每个分支上执行子模块添加。
子模块比分支稍微维护一些,但他们做一些分支不能。他们在你的回购中给你一条平行的发展线。当你在wp repo中修改公共repo时,你在那里提交它,然后你可以将它推回到普通的外部版本,并在其他wp repo的常见库中拉下来。这只是一个普通的回购,但它的克隆存在于wp回购中。在你的wp仓库中,你可以通过首先检查普通仓库中的正确提交,然后在wp仓库外部做git add common
和git commit -m'Update common for feature X'
来告诉它你现在想要哪个版本。这会在wp repo中创建一个提交,它只将提交的散列存储在公共子模块中。
当您在以后的wp repo中签出此提交时,它将检出wp代码,并在常用的回购中进行相应的提交。基本上,您可以跟踪特定时间的常见回购版本。这很好,原因有两个。首先,如果你不需要或不需要它,你不必在特定的wp repo中获得最新的共同点。这也意味着你可以在普通的repo中签出一个较旧的提交,添加它,并将其提交到wp repo中,然后在需要的时候针对较旧的提交进行处理。尽管如此,还是要多做一些工作,并且你必须记得一起工作在WP和通用回购协议。我每天都这样做,但我听到很多人说这太麻烦了。
您还可以添加和提交一个特定版本的公共文件以及wp repo中的文件,例如,您可以进入并重构共同的东西,跳出并修复对wp7中重构的更改,然后添加通用并且wp7在wp7中一起更改并提交它们来跟踪这两个更改。现在,如果您回滚1次提交,常用回购也将回滚到重构之前,因此您可以在每次提交时都有正确运行的代码。
合并不会使分支消失。它在当前分支上创建一个新的提交,它将当前分支作为第一个父分支,并将分支合并为第二个父分支。新提交是两个合并的内容,再加上您为完成合并而必须作出的任何冲突解决方案。合并后的分支对合并没有任何了解,但是仍然存在,仍然可以检出并付诸实施,这通常是完成的。 – 2013-05-04 09:55:28
哦,我一定把我的头脑搞砸了...... – 2013-05-04 09:56:31