代码之家  ›  专栏  ›  技术社区  ›  Jason

如何回滚TFS签入?

  •  92
  • Jason  · 技术社区  · 16 年前

    我想回顾一下我最近在TFS中所做的更改。在Subversion中,这非常简单。然而,这似乎是一个令人难以置信的头痛在TFS:

    选项1:获取先前版本

    1. 手动获取每个文件的早期版本
    2. 签出以进行编辑
    3. 失败-签出(在VS2008中)迫使我获取最新版本

    选项2:获取TFS电动工具

    1. 下载Team Foundation电动工具
    2. 从命令行发出回滚命令
    3. 失败-如果有任何其他挂起的更改,它将不起作用

    选项3:手动撤消更改

    1. 手动撤消我的更改,然后提交新的更改集

    问题

    如何回滚到TFS中的上一个变更集?

    17 回复  |  直到 14 年前
        1
  •  63
  •   Andrew Keller    12 年前
    1. 下载并安装 Team Foundation Power Tools .
    2. 打开Visual Studio命令提示符
    3. 导航到TFS映射到的文件系统上的目录。如果不这样做,则在尝试回滚时将出现“无法确定工作区”错误
    4. 确保其他所有东西都已登记或搁置
    5. 运行tfpt rollback以启动接口。
    6. 选择要回滚的变更集
    7. 签入您回滚的文件的新版本

    该工具的最大缺点是,它希望在合并之前刷新工作区中的所有内容。为了解决这个问题,我创建了一个新的工作区,只用于直接映射到源树中受影响文件所在位置的回滚。

    如果您需要帮助来确定要回滚哪些变更集,我可以在免费的 Team Foundation Side Kicks 添加非常有用的内容。

        2
  •  24
  •   Happer    16 年前

    您的解决方案1将起作用: 一。手动获取每个文件的早期版本

    1. 签出以进行编辑

    2. 签入文件并在提示时忽略服务器更改。

    你失败的原因是你必须拥有 “签出时获取项目的最新版本”选项已启用。 转到工具…选项…源代码管理…Visual Studio Tema Foundation Server并取消选中“签出时获取项目的最新版本”,即可关闭此选项

    干杯

        3
  •  18
  •   Kevin Lo    13 年前

    回滚已从tfpt.exe移动到Team Foundation版本控制工具tf.exe。

    TF - Team Foundation Version Control Tool, Version 10.0.30319.1
    Copyright (c) Microsoft Corporation.  All rights reserved.
    
    Rolls back the changes in a single or a range of changesets:
    tf rollback /changeset:changesetfrom~changesetto [itemspec] [/recursive]
                [/lock:none|checkin|checkout] [/version:versionspec]
                [/keepmergehistory] [/noprompt] [/login:username,[password]]
    
    tf rollback /toversion:versionspec itemspec [/recursive]
                [/lock:none|checkin|checkout] [/version:versionspec]
                [/keepmergehistory] [/noprompt] [/login:username,[password]]
    
        4
  •  14
  •   Ed Blankenship Simon W    13 年前

    在TFS 2010版本控制中,有两个选项可用于回滚(还原)变更集。第一个选项是使用用户界面(如果您有 TFS 2010 Power Tools 已安装)。

    Rollback Changeset in UI for TFS 2010

    另一个选项是使用TFS 2010版本控制命令行应用程序:

    tf.exe rollback
    

    我有两种方法的信息 blog post 此处提供: http://www.edsquared.com/2010/02/02/Rollback+Or+Undo+A+Changeset+In+TFS+2010+Version+Control.aspx

        5
  •  14
  •   Martin Brown    13 年前

    另一种使选项1起作用的方法是颠倒步骤的顺序:

    1. 检查项目
    2. 获取旧版本的特定版本
    3. 签入(忽略“警告服务器版本较新”对话框)或“挂起的更改”对话框的“冲突”部分通过保留本地版本来解决冲突。

    即使你有最新的结帐设置,这也会起作用。

        6
  •  5
  •   Ruslan    13 年前

    作为参考,如果你使用 2010年交通局 ,以下链接指向 Rollback Command (Team Foundation Version Control) 手册。

    回滚 变更集 ,转到 Visual Studio命令提示符(2010) ,导航到TFS工作区目录,然后键入命令:

    tf rollback /changeset:C12345
    

    哪里 12345 是您的变更集编号。在这之后,它将向您显示它所做的操作的日志,并且您将不得不整理合并冲突。

        7
  •  4
  •   Ben Scheirman    16 年前

    啊,刚找到这个 CodePlex Article on using TFPT.exe (电动工具)回滚变更集。

    希望这能帮到你。

        8
  •  4
  •   CamelBlues    14 年前

    没有回滚选项实际上是TFS的特性;)

    要回滚更改:

    1. 查看您想要的任何特定版本的更改
    2. 编辑->全选->复制文件中的文本
    3. 签出服务器上文件的任何版本
    4. 粘贴到文件上并签入。

    现在,回滚之前的所有中间变更集也将被保存!多棒的功能啊!

        9
  •  1
  •   Ben Scheirman    16 年前

    如果您执行了1次签入,并且只想撤消它,则该签入与一个变更集关联。对相关文件夹执行历史记录以查看错误的变更集。打开它查看详细信息(所有文件都已更改等)。

    我相信您可以从该屏幕还原或撤消变更集,但当我尝试执行此操作时,我的Visual Studio刚刚崩溃。/唉——我和你一样痛苦。

    我该在哪里下载这个网站上的TFS?

        10
  •  1
  •   Phillip Wells    16 年前

    我认为Team Foundation电动工具是一条路要走。如果有挂起的更改,可以将其移动到搁置集,然后在运行回滚命令之前撤消或签入所有挂起的更改。见 http://www.codeplex.com/VSTSGuidance/Wiki/View.aspx?title=How%20to%20undo%20a%20check-in&referringTitle=Source%20Control%20Practices%20at%20a%20Glance 更多信息。

        11
  •  1
  •   jlo    15 年前

    Ben Scheirman-“变更集详细信息”对话框没有回滚功能。

        12
  •  1
  •   Damir Arh    15 年前

    另一个选择是 TFSPlus . 此Visual Studio加载项将(除其他外)Get This Version命令添加到“历史记录”窗口。如果您签出了该文件,它将替换为该版本。如果您在之后进行签入,则会有效地回滚到该版本。

    但是,它在单个文件上工作,而不是在完整的变更集上工作。

        13
  •  1
  •   yogee    14 年前
        14
  •  1
  •   Guru    13 年前

    得到 特定版本

    版本 类型 下拉选择类型为 变更集

    使用变更集。。。按钮找到您的变更集或只是键入,如果您知道这个号码。

    在您拥有特定的变更集之后。

    退房

    登记入住

        15
  •  0
  •   PJUK    14 年前

    这些解决方案对我都不起作用戴夫罗伯茨解决方案是最接近我实际得到的工作。 我没有启用签出项目的最新版本,但它似乎是服务器策略。

    我的解决方案是签出文件进行编辑,获取特定版本,然后在检测到冲突时使用合并工具(并手动合并所有更改),使文件处于原来的状态。

    我要去与具体的版本进行比较,复制整个文件,然后把它粘贴到旧版本的顶部。

    不过,还是应该有一个更简单的方法来做到这一点!

        16
  •  0
  •   StarCub    13 年前

    上述解决方案适用于TFS2008。TFS2010具有内置的回滚功能。看见 this 文章了解详情。

        17
  •  0
  •   Evgeniy Berezovsky    13 年前

    安装 最新版本的TFS电动工具 (2011年8月),你可以 右键单击更改集 并选择“回滚整个变更集”。没有比这更容易的了。

    这里有: http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f

    它暗示了 团队资源管理器增强功能 在上一页:

    此版本的新功能是能够轻松回滚版本控制中的更改。