Git允许无基础的合并吗? 我知道,在Team Foundation版本控制中,毫无基础的合并是危险的。我想知道使用Git是否也很危险
如果您不熟悉无基础的合并。红色虚线是一条毫无根据的重设基础/合并Git允许无基础的合并吗? 我知道,在Team Foundation版本控制中,毫无基础的合并是危险的。我想知道使用Git是否也很危险,git,tfs,merge,git-merge,tfvc,Git,Tfs,Merge,Git Merge,Tfvc,如果您不熟悉无基础的合并。红色虚线是一条毫无根据的重设基础/合并 使用Git这样做安全吗 > p>可以使用 Git Cyt Pox向任意分支应用任意提交。嗯,是的和不。Team Foundation版本控制(TFVC)强制执行分支层次结构,并且它有一个规则,您只能从分支到父或子。在您提供的映像中,您可以将B合并到C,这不是一个无基础的合并。将B合并到C将使用B3作为公共祖先,并生成一个好的、易于处理的三方合并 但是,TFVC不允许您将A直接合并到C中。您需要将A合并到B中,然后将结果合并到C中。
使用Git这样做安全吗 > p>可以使用<代码> Git Cyt Pox向任意分支应用任意提交。
嗯,是的和不。Team Foundation版本控制(TFVC)强制执行分支层次结构,并且它有一个规则,您只能从分支到父或子。在您提供的映像中,您可以将B合并到C,这不是一个无基础的合并。将B合并到C将使用B3作为公共祖先,并生成一个好的、易于处理的三方合并
但是,TFVC不允许您将A直接合并到C中。您需要将A合并到B中,然后将结果合并到C中。如果您想绕过此工作流,您将无法执行无基础的合并,这将跳过公共祖先计算。结果是,您正在进行一个没有共同祖先的三方合并—两个文件看起来都像新添加的文件,它们之间的任何差异都将被视为冲突 这是一个巨大的痛苦 Git并不试图强制执行任何分支层次结构,因此在您的示例中,您可以从C合并到A,而不会受到惩罚。A3将是本例中的共同祖先,您将有以下图表: C 1--2--3----M
/ /
B 1--2--3--4--5 /
/ /
A 1--2--3--4--5-----------
所以这个场景不是Git中的无基础合并,但是您仍然可以在Git中进行无基础合并。如果您尝试合并两个没有共同祖先(没有合并基)的分支,那么这将是一个无基础的合并,并且在TFVC中执行无基础合并时会出现所有问题
您可以尝试创建一个没有父级的新分支(via)。红色显示的是与git的完全正常合并,如果您在同一文件中的同一位置更改两个分支中的内容,则除了一些“正常”合并冲突外,您不会遇到任何困难。否则,没有问题 但如果你不需要实现合并,你可以选择cherrypick 但git的好处在于,您可以尝试撤销(合并很容易撤销!)。因此,无需太多困难,您可以尝试合并,看看会发生什么,回答您自己的问题;-)如果您不满意,请撤消
欢迎离开tfs;-) 但这不是合并,这是一个樱桃选择。