2

我最近阅读了关于搁置的文章,并认为这是一个非常有用的概念。所以,下次有人来找我时,我的应用程序中有一个错误,我搁置了我正在做的大量工作,修复了错误(对类进行了大约 30/40 的更改并进行了一些重构)并签入了已修复的代码。

我现在想取消搁置我正在处理的代码,但也要保留我所做的更改。问题是,我已经对服务器上的文件进行了这些广泛的更改,这些更改还没有被搁置。

我可以在这里做什么?似乎需要数小时/数天才能再次合并所有内容。我知道 Eclipse 有一个很棒的功能,您可以在其中比较两个文件,并为每次更改决定您是使用服务器上的版本还是本地版本。像这样的东西,我可以选择搁置版本或本地版本,这将是完美的。

有什么东西可以让我的生活更轻松,还是我注定要翻阅搁置集,查看每个有冲突的文件,查看服务器版本,查看本地版本,将本地版本的部分复制到记事本文件中,将它们复制到服务器版本......等等等等。这似乎是一个可怕的混乱。

谁能帮我吗 ?

4

3 回答 3

6

不应要求您仅选择服务器版本或本地版本。您应该能够像以前那样使用 3 路合并工具来解决冲突。

听起来您在这里遵循推荐的做法:

  • 如果您有某个文件,假设它是版本 2 的最新版本,并且您开始编辑它,您将对该文件进行待处理的更改。
  • 当您搁置该文件(撤消挂起的更改)时,您将回到没有挂起更改的版本 2。
  • 如果您编辑该文件并将其签入,则服务器将处于新版本(假设它是版本 3)
  • 如果您随后取消搁置现有搁置集,您的更改将再次针对版本 2,这意味着当您的更改针对非最新版本挂起时:

    源代码管理资源管理器

可以理解,这意味着你有冲突。当您执行“获取最新”或“签入”时,您将能够解决这些冲突。这些应显示在 Visual Studio 底部的视图中:

分辨率选项

正如您所注意到的,可以选择“获取服务器版本”和“保留本地版本”。但是您也应该有机会使用 AutoMerge(如果更改可以自动合并,即您没有在服务器和本地文件中都更改过的文件区域)和 Merge Changes In Merge Tool(这将打开一个三向合并工具。)

如果您在 Merge Tool 中选择 Merge Changes,您将获得内置的 3 路合并工具:

三向合并工具

如果你不喜欢内置的 3 路合并工具(我不喜欢 2010 中包含的那个,VS 2012 包含更好的体验),你可以在 Visual Studio 中插入任何 3 路合并工具选项:

配置合并工具

如果完全缺少 Merge In Merge Tool 的选项,则 TFS 可能认为您正在处理二进制文件。在 TFS 中,当文件被标记为二进制文件时(更准确地说,当“文件合并”设置为“禁用”时)您将无法选择自动合并这些文件,或在合并工具中合并它们。这是一种优化,以避免在冲突期间下载两个额外的大型二进制文件副本,并避免试图将它们塞进合并引擎。

您可以通过打开团队资源管理器、右键单击您的项目集合并选择团队项目集合设置 > 源代码控制文件类型来配置“不可合并”的文件类型...确保列出您正在使用的文件类型在此对话框中作为“可合并”:

文件类型对话框

于 2012-09-19T14:34:00.043 回答
2

在取消搁置之前单击Get Specific Version...您的项目。在新窗口中,将 Type 从更改Latest Version为其他选项之一(最适合您的情况,最有可能是 Changeset 或 Date)。您的目标是选择搁置更改时计算机上的更改集。

在此处输入图像描述

一旦您签出与 selved set 相同的版本,您就可以无错误地取消搁置。然后执行Get Latest并解决当时发生的任何冲突。

于 2012-09-19T13:54:14.593 回答
0

我认为你可以检查你的代码然后加载你的搁置。如果需要,请撤消更改并再次签入。

在 TFS 和 VS2010 中也可以通过 line 进行合并。如果存在合并冲突,它会告诉您。Sourcecontrol 的一个不错的功能是您始终可以前后移动。

于 2012-09-17T09:05:11.223 回答