我最近读到了搁架,并认为这是一个非常有用的概念。所以,下次有人带着我的应用程序中的错误来找我时,我搁置了我正在做的大量工作,修复了错误(对类进行了~30 / 40更改并进行了一些重构)并检查了修复代码。
我现在想要取消保留我正在处理的代码,但保留我所做的更改。问题是,我对服务器上的文件进行了这些大量更改,这些更改还没有进入搁置。
我可以在这做什么?似乎需要花费数小时/天才能再次合并所有内容。我知道Eclipse有一个很棒的功能,您可以比较两个文件,每个更改决定您是在服务器上使用该版本还是本地版本。我可以选择搁架中的版本或本地版本的东西是完美的。
有没有什么可以让我的生活更轻松或者我注定要浏览搁置集,在每个有冲突的文件中,查看服务器版本,查看本地版本,将本地版本的部分复制到记事本文件,将它们复制到服务器版本......等等。这似乎是一个可怕的混乱。
任何人都可以帮助我吗?
答案 0 :(得分:6)
您不只应选择服务器版本或本地版本。您应该能够使用像您习惯的3向合并工具来解决冲突。
听起来你正在遵循这里推荐的做法:
如果您当时要取消搁置现有的搁置集,您的更改将再次针对版本2,这意味着您的更改将针对最新版本进行更改:
可以理解,这意味着你有冲突。当您执行Get Latest或Checkin时,您将能够解决这些冲突。这些应显示在Visual Studio底部的视图中:
如您所知,有服务器版本和保留本地版本的选项。但是你也应该有机会使用AutoMerge(如果的更改可以自动充电,即你没有在服务器和本地文件中都有变化的文件区域)和Merge合并工具中的更改(将打开3向合并工具。)
如果选择合并工具中的合并更改,您将获得内置的3向合并工具:
如果您不喜欢内置的3向合并工具(我不喜欢2010年包含的工具,VS 2012包含很多更好的经验),您可以插入Visual Studio选项中的任何3向合并工具:
如果完全缺少Merge In Merge Tool中的选项,则TFS可能认为您正在处理二进制文件。在TFS中,当文件被标记为二进制时(更准确地说,当“文件合并”设置为“已禁用”时),您将不会选择自动注释这些文件,或者将它们合并到合并工具中。这是一个优化,以避免在冲突期间下载两个额外的大型二进制文件副本,并避免尝试将它们塞进合并引擎。
您可以通过打开团队资源管理器,右键单击项目集合并选择团队项目集合设置>来配置“不可合并”的文件类型。源控制文件类型...确保您正在使用的文件类型在此对话框中列为“可合并”:
答案 1 :(得分:2)
在您取消搁置之前,点击项目中的Get Specific Version...
。在新窗口中,将类型从Latest Version
更改为其他选项之一(以最适合您的情况为准,最常见的是Changeset或Date)。您的目标是在搁置更改时选择计算机上的更改集。
一旦您检查出与自选集相同的版本,您就可以毫无错误地取消搁置。然后执行Get Latest
并解决当时发生的任何冲突。
答案 2 :(得分:0)
我认为你可以检查你的代码,然后加载你的货架。如果需要,撤消更改并再次签入。
TFS和VS2010的合并也可以通过线路进行。如果存在合并冲突,它会告诉你。而Sourcecontrol的优点是你可以随时往返。