如何在一个GIT存储库中跟踪两个版本的项目?

时间:2010-01-08 01:02:52

标签: git history

我在一个本地git存储库中有一个项目的两个版本。我必须将此存储库提交到2个远程存储库,每个版本一个;

LOCAL GIT(V1 / V2) - > REMOTE GIT(V1),REMOTE GIT(V2)

我在LOCAL GIT存储库中有一些文件只能转到REMOTE GIT(V1)而其他文件只能转到REMOTE GIT(V2)。现在我将完整的本地存储库提交给两个遥控器。 我可以只将一些文件提交给REMOTE1吗?

我需要在一个存储库中同时拥有该项目的两个版本,但是希望有一个选项来划分历史记录。我不认为任何分支可以帮助,因为我将不得不对两个分支进行相同的更改。大多数代码,对于VER 1和VER 2,90%的代码是相同的。对于两个版本,新代码通常是相同的。

3 个答案:

答案 0 :(得分:3)

分支正是您所需要的。使用Git可以轻松快速地进行分支,因此除了几次击键外,你不会丢失任何东西。

您可以使用3个分支。创建一个“通用”分支,您将处理“forks”共有的东西,并在提交后合并到它们中。对于特定的东西,在其中一个分支机构工作。

Git在文件系统上使用硬链接,因此分支在速度和使用空间方面都很便宜。

最后,您始终可以选择要推/拉的分支。

答案 1 :(得分:0)

创建三个Git存储库:coreapp_1app_2。在每个app存储库中,创建一个引用core存储库的Git子模块。

core存储库视为纯库,将app存储库视为纯库消费者,构建这三个项目,以便保持{{1}中两个“版本”的共同点。存储库以及core存储库中两个版本之间会出现分歧的所有内容。构建app存储库,以便app项目可以批量放置,而不需要修改,放入core存储库中的子目录中。您可能需要在所有app存储库之间共享一个最小的公共初始化脚本,但这是一个很小的代价。

以这种方式构造代码的场景非常普遍。虽然以这种方式使用Git来支持这种代码体系结构的情况远不常见,但它被认为是一种可行的可能性。

答案 2 :(得分:-1)

听起来你需要使用子模块git-submodule。您可以将公共代码存储在主存储库中,但随后将单独的版本存储在子模块中。你不能用git分割历史。每个提交都是基于内容和父母的加密方式。