将两个TFS分支与git TFS合并

将两个TFS分支与git TFS合并,git,tfs,git-tfs,Git,Tfs,Git Tfs,我正在使用git-tfs,我想知道是否可以使用git-tfs合并两个tfs分支。我有两个分支机构$/MyCompany/Dev&$/MyCompany/Release-3.3。3.3版源于开发分支。两者都是使用git-tfs作为不同的git存储库签出的 我想将更改重新合并到Dev分支中。这可以通过git-tfs来实现吗?或者我必须尝试使用tfs工具来实现吗?我不是git-tfs用户,但我过去曾使用git-svn来实现这一点(我相信有类似的方法)。我认为你的主要问题是你有两个回购协议。如果将两个远

我正在使用
git-tfs
,我想知道是否可以使用
git-tfs
合并两个tfs分支。我有两个分支机构$/MyCompany/Dev&$/MyCompany/Release-3.3。3.3版源于开发分支。两者都是使用git-tfs作为不同的git存储库签出的


我想将更改重新合并到Dev分支中。这可以通过
git-tfs来实现吗?或者我必须尝试使用tfs工具来实现吗?

我不是git-tfs用户,但我过去曾使用git-svn来实现这一点(我相信有类似的方法)。我认为你的主要问题是你有两个回购协议。如果将两个远程分支添加到同一个git repo,那么应该能够执行本地合并、本地提交,然后将该提交推送到TFS


HTH

我发现了一种非常棒的方法,如果是很老套的话。Git tfs使用Git config管理其对tfs区域的感知。特别是每个
远程
有3个属性;url、存储库和获取,例如:

tfs-remote.default.url=http://tfsserver:8080/tfs/collection
tfs-remote.default.repository=$/Product/Branch/Component
tfs-remote.default.fetch=refs/remotes/default/master
通过使用不同的名称将这3个属性再次设置为
default
,可以添加另一个
remote
。例如:

tfs-remote.feature_branch.url=http://tfsserver:8080/tfs/collection
tfs-remote.feature_branch.repository=$/Product/FeatureBranch/Component
tfs-remote.feature_branch.fetch=refs/remotes/default/feature_branch
您可能需要立即发布git tfs引导程序

然后,您可以发布:

git tfs fetch -i feature_branch
然后使用以下命令合并提交:

git merge tfs/feature_branch

由于git tfs 0.16,您可以管理tfs分支(使用
branch
命令),因此您现在可以轻松地初始化现有分支,创建一个分支并合并tfs分支

从0.19版开始,您可以对2个TFS分支进行git合并,并在TFS中签入它(使用rcheckin),它将作为合并变更集签入:

唯一的限制(由于TFS)是,在使用git进行合并并在TFS中进行检查之前,所有提交都应该在TFS中进行检查


因此,您现在可以比使用2TFS分支更轻松地合并并签入它们…

我更喜欢使用git合并算法,因为它似乎可以自动解决更多冲突。这实际上是否会在TFS中创建一个合并挂起更改?如果没有,您就有点像是在从TFS客户机进行合并的下一个人,因为TFS不会将合并记录为已执行。因此,它将再次尝试合并这些变更集。(不可否认,这些冲突将是相当微不足道的,但可能仍然很烦人。)你是对的,如果有多个用户合并分支,这种机制将导致问题。我可能在这里找到了更好的解决方案:有人知道git tf(不是git tfs)是否允许这种合并吗?签入是作为合并还是作为新代码进行的?@SebastienMartin现在可以使用开发版本的git-tfs(并且可以使用版本0.19)。请参阅下面我的回复…注意,截至2013年9月30日,文档表明
init branch
已被弃用,取而代之的是
branch--init
@DavidGardiner您的权利,但2是等效的(一个是另一个的包装器),该命令在0.20之前不会被删除(0.19仍然没有发布)。不用担心。。我想我们可以假设您是git tfs信息的良好来源:-)