然后分支在TFS中回滚父分支

时间:2013-07-08 16:07:28

标签: tfs rollback branching-and-merging tfvc

我对TFS不是很有经验,我找不到办法做我想做的事。

好的,我们在TFS中有一个主分支,我们在这个分支上开始了新的开发。在开始修改之前,我们完全忘了创建一个新的。

最后我想要的是修改前的状态中的主要分支(我有确切的变更集编号),以及正在进行的工作的开发分支...

这就是我的所作所为:

  • 将当前状态的主分支分支到开发分支
  • 在开始修改之前将主分支回滚到最新的变更集

此时,我认为我没事,但是当我尝试将开发分支合并到主分支时,VS正确说明它无法找到任何已签入我的开发分支的变更集但是不是我的主要的,因为回滚没有删除Changesets,只是添加了一个新的,并进行了回滚操作。

我认为可能在开发分支中检查一些新内容会取消阻止,但不幸的是,只有最新的(分支后)签到似乎才有资格合并。

我肯定做错了,或者做对了。

任何人都有解释和想法如何实现我的目标?

3 个答案:

答案 0 :(得分:2)

因为您的情况经常发生(在主分支上工作,以后才意识到您应该已经分支),这是TFS(命令行和Visual Studio中)支持的用例。

您要指定By Latest并选择应包含在分支中的最后一个签入,而不是指定By: Latest Version(默认)或By: Changeset。之后的所有签到都会从分支中排除,但之后可以合并(如有必要,可以进行挑选更改)。

或者,您可以在工作区中获取特定版本(获取特定版本),并在创建分支时指定By: Workspace。按日期或标签也是有效的选择,但我不经常使用它们。

答案 1 :(得分:0)

回滚并不是传统上认为回滚的方式。它将代码恢复为您想要的状态,但您需要将回滚签入为新的更改。这会保留代码的完整历史记录,包括回滚。

我建议你:

  1. 删除您的子分支
  2. 将您的父分支置于您想要的状态,即使您有一些额外的签到和回滚。
  3. 一旦所有内容都完全签入,然后分支到您的子分支。

答案 2 :(得分:0)

回滚是常规变更集,您可以像其他任何变更集一样对其进行回滚。这是您可以做的:

  1. 从您的主分支创建一个开发分支。
  2. 回滚主分支中不需要的更改。
  3. 在主分支中检查回滚。这将创建变更集#XYZ。

这时,请继续在开发部门进行开发。您也可以在主分支中签入更改。完成开发后:

  1. 回滚主分支中的回滚(更改集#XYZ)。
  2. 合并从开发分支到主分支的更改。

最后一个操作应该只合并分支后在开发分支中所做的更改。

根据更改和分支配置的复杂性,这可能是最简单的方法。