如何删除TFS 2010中的特定ChangeSet?

如何删除tfs2010中的特定变更集?

我有变更集版本号545,544,543,542。

现在,我希望仅在tfs中删除特定的变更集543?

您必须回滚变更集,否则无法删除变更集。 ( 回滚命令 )

在您的情况下,一个简单的Rollback命令将是这样的:

 TF rollback /changeset:C543 

您无法删除TFS中的变更集。 即使你可以以某种方式,(我认为你可以对TFS数据库运行sql查询来做到这一点)这不是一个好习惯。 如果人们开始删除变更集/历史记录,则版本控制的全部目的将被取消。 我认为很少有其他源代码控制允许这样做,但我不建议这样做。 这是一个不好的做法。

此外,如果您使用TFS的其他function,如Workitems/Test Cases等,变更集会链接到它,所以如果它们被删除,链接将变为孤儿(我认为)。

正如Arin所说,你可以做的最接近的事情就是使用Rollback命令,但是当你这样做时,你必须在回滚后签入代码,所以基本上你会在历史记录中看到旧的changset和新的changset(回滚)。

免责声明 – 你永远不应该,永远不要这样做。 甚至不要考虑它!

背景 – 我正在尝试进行部分TFS迁移,并使用“TFS集成”工具进行最恶劣的时间。 最近它将一系列错误的变更集转储到我的目标TFS中。 我没有擦掉所有内容并从头开始,而是围绕着TFS数据库,并提出了以下内容(在TFS 2013上,我认为TFS 2010或多或少类似):

 declare @ChangeSetId int = 5735 -- Delete the actual file content first delete from tbl_Content where ResourceId in (select ResourceId from tbl_File where FileId in (select FileId from tbl_Version where VersionFrom = @ChangeSetId)) -- Remove the file delete from tbl_File where FileId in (select FileId from tbl_Version where VersionFrom = @ChangeSetId) -- Purge the version delete from tbl_Version where VersionFrom = @ChangeSetId -- Destroy the changeset delete from tbl_ChangeSet where ChangeSetId = @ChangeSetId 

这样做是不明智的。 它不受Microsoft支持。 不要在现场制作环境中使用它! 请改用回滚! 但是,如果你迫切想要消除变更集,你可以试试这个。 但不要告诉我你没有被警告过。