TFS替换文件后无法提交更改

3
我正在重新编写一个同事原型版本的Asp.Net项目。我删除了Default.aspx并创建了一个新的,现在我正在尝试将新版本检入。
当我尝试检入待处理更改时,我得到标准提示:
“检查入库,由于冲突更改未检查任何文件。请使用冲突通道解决冲突并重试。”
然后我被重定向到待处理更改-冲突选项卡,在那里我可以选择“保留本地版本”或“使用服务器版本”。
如果我选择“保留本地版本”,我会收到以下错误提示:
“错误,遇到以下异常。$ /ProjectName/Default.aspx项目已经有待处理的更改。”
如何才能让它接受我的新文件版本呢?
3个回答

20

听起来服务器上有更新版本的文件。 把你的本地文件复制到其他地方,然后放弃你的更改并获取最新版。然后用你的本地文件签出并覆盖已签出的版本。也许有更优雅的方法,但它应该可以工作,当然它也会覆盖任何对服务器端版本所做的更改。


几秒钟前我自己就解决了,但你的答案描述了对我有用的方法。 - Jackson Pope
你不应该这样做,因为这就像你从源代码控制中删除文件并添加新文件一样,如果你的同事进行了修改,他们将会失去这些更改,甚至无法合并这些更改。 - Mohamed.Radwan -MVP
在我的情况下,我不得不执行 'git rm the-file' 然后再恢复才能解决这个问题。 - Eddie Groves

2
我们刚刚为了这个问题在TFS上浪费了30分钟。
一个同事已经检入了一个文件,我们想要回滚到之前的版本。TFS允许我们检出该文件,使用历史记录获取旧版本,但是一旦我们点击保存,VS2015会立即“取消检出”该文件,恢复到TFS中的最新版本,并且我们失去了更改。没有警告,也没有防止它发生的可能性。
其他时候,我们进行检入,但是TFS会抱怨“由于冲突的更改未检入任何文件”,并且再次将我们恢复到TFS中的最新版本,而没有防止此情况发生的选项。
最后对我们有效的方法是:
  • 检出文件
  • 将其内容设置为旧版本(这就是我们想要的)
  • 打开存储该文件的文件夹并将文件设置为只读
  • 检入文件
通过这样做,TFS没有自动用TFS中的最新代码覆盖我们的文件,因此我们能够检入所需的版本。
我需要一杯啤酒......

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接