我在一个本地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%的代码是相同的。对于两个版本,新代码通常是相同的。
答案 0 :(得分:3)
分支正是您所需要的。使用Git可以轻松快速地进行分支,因此除了几次击键外,你不会丢失任何东西。
您可以使用3个分支。创建一个“通用”分支,您将处理“forks”共有的东西,并在提交后合并到它们中。对于特定的东西,在其中一个分支机构工作。
Git在文件系统上使用硬链接,因此分支在速度和使用空间方面都很便宜。
最后,您始终可以选择要推/拉的分支。
答案 1 :(得分:0)
创建三个Git存储库:core
,app_1
,app_2
。在每个app
存储库中,创建一个引用core
存储库的Git子模块。
将core
存储库视为纯库,将app
存储库视为纯库消费者,构建这三个项目,以便保持{{1}中两个“版本”的共同点。存储库以及core
存储库中两个版本之间会出现分歧的所有内容。构建app
存储库,以便app
项目可以批量放置,而不需要修改,放入core
存储库中的子目录中。您可能需要在所有app
存储库之间共享一个最小的公共初始化脚本,但这是一个很小的代价。
以这种方式构造代码的场景非常普遍。虽然以这种方式使用Git来支持这种代码体系结构的情况远不常见,但它被认为是一种可行的可能性。
答案 2 :(得分:-1)
听起来你需要使用子模块git-submodule
。您可以将公共代码存储在主存储库中,但随后将单独的版本存储在子模块中。你不能用git分割历史。每个提交都是基于内容和父母的加密方式。