【问题标题】:TFS can't check in changes after replacing file替换文件后 TFS 无法签入更改
【发布时间】:2021-03-01 22:03:40
【问题描述】:

我正在重写一个同事已经完成原型版本的 Asp.Net 项目。我删除了 Default.aspx 并创建了一个新的,现在我正在尝试检查该新版本。

当我尝试签入待处理的更改时,我得到了标准:

签入,由于更改冲突,没有签入文件。请用 Conflicts Channel 解决冲突并重试。

我被重定向到 Pending Changes - Conflicts 选项卡,其中显示了以下选项:'Take Server Version''Keep Local Version'

如果我点击'Keep Local Version',我会收到以下错误:

错误,遇到以下异常。项目 $/ProjectName/Default.aspx 已经有待处理的更改。

如何让它接受我的新版本文件?

【问题讨论】:

    标签: tfs


    【解决方案1】:

    听起来服务器端有该文件的更新版本。将您的本地文件复制到某处,然后丢弃您的更改并获取最新信息。然后签出并用您的本地文件覆盖签出的版本。也许有一种更优雅的方式来做到这一点,但它应该可以工作 - 当然它也会覆盖对服务器端版本所做的任何更改。

    【讨论】:

    • 几秒钟前我自己想通了,但你的回答描述了什么对我有用。
    • 您不应该这样做,因为这就像您从源代码管理中删除文件并添加新文件一样,因此如果您的同事进行了修改,他们将丢失它,甚至无法合并该更改。
    • 在我的情况下,我必须 'git rm the-file' 并恢复以解决此问题。
    【解决方案2】:

    由于这个问题,我们刚刚与 TFS 进行了 30 分钟的战斗。

    一位同事签入了一个文件,我们想回滚到以前的版本。 TFS 会让我们签出该文件,使用历史记录,并获取旧版本,但是一旦我们点击保存,VS2015 会立即“取消签出”文件,恢复到 最新版本 TFS 中的文件,我们丢失了我们的更改。没有警告,也没有办法阻止它。

    其他时候,我们会进行签入,但 TFS 会抱怨“由于更改冲突,没有签入文件”,并且再次将我们从 TFS 恢复到最新版本,没有任何选项可以防止这种情况发生.

    最终对我们有用的是

    • 签出文件
    • 将其内容设置为旧版本(这是我们想要的)
    • 打开存储它的文件夹并将文件设置为只读
    • 签入文件

    通过这样做,TFS没有自动用来自 TFS 的最新代码覆盖我们的文件,我们能够签入我们想要的版本。

    我需要一杯啤酒……

    【讨论】:

      【解决方案3】:

      编辑后的文件不再处于只读状态。
      所以这是解决方案:

      1. 关闭项目。 (或者使用TfsGoOffline,我喜欢这个,你可以跳过2、3、4)
      2. 断开互联网。
      3. 打开项目,它现在将处于离线模式。
      4. 重新连接到 Internet。
      5. 右键单击解决方案并选择“在线”。
      6. VS 将检查所有非“只读”文件并将其视为“已更改”并标记为已签出。
      7. 现在所有被替换的文件都已成功签出。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-09
        • 2014-12-31
        • 1970-01-01
        • 2016-03-27
        • 2013-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多