Resolve Team Foundation Version Control conflicts

TFS 2017 | TFS 2015 | TFS 2013

Visual Studio 2019 | Visual Studio 2017 | Visual Studio 2015 | Visual Studio 2013

An advantage of using Team Foundation version control to manage your files is that several people can work concurrently on a file. One drawback is that sometimes you must resolve conflicts before you can get, check in, unshelve, merge, or roll back your files.

Although it can be frustrating to encounter conflicts, the system provides information and tools to help you understand and resolve conflicts.

Resolve conflicts

Use the Resolve Conflicts window to resolve conflicts that are blocking you.

Use the Resolve Conflicts window to resolve conflicts.

Resolve conflicts

By default, the window shows only the conflicts caused by the most recent operation you attempted. When the window is in this state, a message appears that begins: Path filter applied. To show all conflicts in your workspace, choose Get All Conflicts. A message that begins with: n Conflict(s) appears.

If a lot of time has passed since you made changes to files in your workspace, new conflicts might have occurred. To refresh the Resolve Conflicts window, choose Refresh.

Each conflict contains information and sometimes links that might help you resolve it. To get more information, you can select the conflict and choose:

  • Choose History. History to see the history of the file. If the operation that caused the conflict is a Merge or a Rollback, then you can choose the menu control to the right of History and then select either Source History or Target History.

    See Get the history of an item.

  • Choose Annotate. Annotate to view details on all changes that were made to the most recent version of the file, including who made each change and when they made it. See View file changes using annotate.

  • Choose Compare. Compare (or the menu to the right of the button and then choose a command). The Diff window appears.

AutoResolve all conflicts

By default the system automatically attempts to AutoResolve All conflicts unless you have turned off this option (see Tips). In the Resolve Conflicts window, you can also manually choose AutoResolve All, and then choose:

  • Select All Conflict Types if you want the system to attempt to resolve the conflicts automatically by using all its heuristics.

  • Select Specific Conflict Types if you want the system to attempt to resolve the conflicts, but you want to exclude some heuristics.

    The Choose Conflicts to Resolve dialog box appears. Check or clear the options that you want to enable or disable, and then choose AutoResolve. For more information, see Understand the automatic options below.

The system attempts to automatically resolve the conflicts displayed in the Pending Changes window. Any conflicts the system was unable to resolve will remain in the window. You have to manually resolve these conflicts.

AutoMerge a single conflict

Choose AutoMerge if you want to try to resolve selected conflicts using all the AutoMerge options described in Understand the automatic options below.

Tip

You can press and hold either the Ctrl or the Shift key and then select multiple conflicts.

Note

If AutoMerge is disabled, then this conflict must be manually resolved.

Manually resolve a single conflict

If the system cannot automatically resolve a conflict, or if you want to make sure you understand what is changing, you must manually resolve the conflict. Within each conflict, the system displays the actions that you can take to resolve the conflict. The actions displayed depend upon the conflict type, and the operation that caused the conflict.

Merge changes in merge tool

When a conflict is caused by conflicting content changes, you can choose Merge Changes in Merge Tool.

When you choose this action, the Merge window appears.

Merge changes in merge tool

The outcome of your work to resolve the conflict is shown in the Results pane.

In this window you can:

  • Select the layout of the window: Vertical View, Horizontal View, Mixed View.

  • Navigate among the differences and the conflicts.

  • Select items from the left and right versions of the file to include them in the result.

  • Type additional content into the file in the Result pane.

  • View the History of the file. See Get the history of an item.

  • Compare the various versions of the file.

  • Annotate the file to see who changed what. See View file changes using annotate.

When are satisfied with the contents of the Result pane, choose Accept Merge.

Understand the automatic options

In special cases, you may want to restrict the types of conflicts automatically resolved by the AutoResolve All option.

When you choose AutoResolve All, and then Specific Conflict Types, the Choose Conflicts to Resolve dialog box appears.

Understand the automatic options

If you want the system to automatically resolve conflicts that occurred because...

As explained in this example...

Then select this check box...


Non-conflicting content changes were made in each version of a file

In the file version on the left, a zero was added at the beginning. In the file on the right, a three was added at the end:

Non-conflicting content changes

Conflicts with any content changes

Content changes were made that are unique to the workspace (during get or checkin operation) or target version (during merge or rollback operation)

four and five were added to the workspace or target version:

Content changes unique to workspace or target

Conflicts with content changes made only in the local workspace or target branch

Content changes were made that are unique to the server (during get or checkin operation) or source version (during merge or rollback operation)

four and five were added to the server or source version:

Content changes unique to server or source

Conflicts with content changes made only in the server version or source branch

A file on the server (during get or checkin operation) or in the source branch (during merge or rollback operation) was renamed

You checked out a file that is named launch.cs and worked on it. During that time, someone else checked in a changeset that affected the same file. That changeset did not modify the contents of the file, but it did change the name of the file to start.cs.

Conflicts caused by renaming file in the server version or source branch

  • Common content changes were made that resulted in identical content in each version

  • You changed a file, checked it in through a Gated Check-in build, and selected the Preserve my pending changes locally option

Changes to each version resulted in identical file content. The changes can be to the content in the files, as shown in the following example:

Identical content changes in each version This option also resolves conflicts that are caused by all other operations (for example, rename, delete, undelete, and branch) and that result in identical files.

Tip

If you select this check box, when you proceed, the system will resolve these changes by taking (downloading) the server version onto your workspace.

Conflicts caused by identical change in the server and workspace

Work from the command prompt

Tips

  • Tips By default the system automatically attempts to AutoResolve All conflicts. To change the option, from the menu bar choose Tools, Options, and then in the Options dialog box, navigate to Source Control, Visual Studio Team Foundation Server. Clear the Attempt to automatically resolve conflicts when they are generated checkbox.

  • Tips Does your team need to collaborate to resolve a large number of conflicts (for example, which might occur after merge operation in a large codebase)? If so, a public workspace on a shared dev machine might help. See Create and work with workspaces.