我可以使用git来跟踪有意分离的公共和私有分支吗?



我有:

           X         Z
o-----o----o-----o---o A
         /        /
  o------o---------o B
         Y

假设A和B故意分离,因为(比如说)A是公共分支,B是公司内部分支(由于技术原因需要有一些差异,并且可能有不应该在开源版本中出现的秘密)。假设X是一个有意不获取y中的某些更改的提交。

用Git完成以下任务的最好方法是什么?

  1. 在X处合并时故意忽略的Y更改不会在z处重新应用
  2. 我可以发布a的公开版本,其中X处的合并显示为单个压缩提交,因此Y(或其他内部提交)中的任何潜在机密信息都不会显示在公共修订历史记录中。

我不认为你画的图表是可能在一个单一的Git存储库(考虑到你的保密/等约束)。我能想到的唯一类似的方法是保留三个分支:public, privatesharedshared中的提交在完成时合并到publicprivate中。这将允许跨公共/私有分支的分歧,而不必担心重新应用差异,因为提交实际上已经合并,因此将是git不会尝试重新应用的真正祖先。

如果你愿意的话,你可以把它和你想要的方法融合在一起,在private中开发一段时间,然后重新划分成sharedprivate部分。然后可以将共享部分合并回private,同时合并回public。然后你就有了我在第一段中描述的最终行为,但你可以或多或少地发展成你在问题中所希望的那样。

最新更新