冲突解决

当对工作区和远程 Git 存储库中的同一项进行更改时,会发生冲突。 出现冲突时,Git 状态显示“冲突”和“提交”已禁用。

报告的屏幕截图,其中 Git 状态显示发生冲突。

如果在出现冲突时选择“更新”,会显示一条消息,通知需要先解决冲突,然后才能进行更新。

该屏幕截图显示了来自“源代码管理”选项卡的错误消息,其中显示了冲突情况。

可通过 3 种方法来解决冲突:

在 UI 中解决冲突

选择“全部更新”,查看存在冲突的所有项的列表。 然后,可选择要为每个项保留的版本。 对于每个冲突项,可以选择接受来自 Git 存储库的传入更改,或保留工作区中的当前版本。

用于选择要保留的冲突项版本的 UI 的屏幕截图。

  • 选择“接受传入更改”,覆盖工作区中的更改。 如果导入成功,工作区更改将丢失,并且 Git 状态更改为“已同步”。

  • 选择“保留当前内容”,保留工作区中当前存在的版本。 更新完成后,Git 状态变为“未提交更改”,因为工作区中的更改尚未提交到分支。

还原到以前的状态

可以将整个工作区或 Git 分支还原到上次同步的状态。 如果将 Git 分支还原到以前的提交,则仍可以看到对未同步分支所做的更改。 如果还原工作区,则会丢失自上次提交以来对工作区所做的所有更改。

要还原到以前的同步状态,请执行以下操作之一:

  • 使用撤消命令将工作区中存在冲突的项返回到其上次同步状态。
  • 使用 Azure DevOps 中的 git revert 命令还原到 Git 中的上次同步状态。

还可以通过断开工作区连接并重新连接来解决冲突。 在重新连接时,请选择要同步的方向。但请注意,重新连接时,这将覆盖工作区或分支中的所有项,而不仅仅是冲突项。 它不会将工作区或分支返回到上次同步状态。 相反,它会用其他位置的内容覆盖一个位置的所有内容。

在 git 中解决冲突

如果不确定进行了哪些更改、要选择哪个版本,并且不想还原到以前的状态,可尝试通过创建新分支、解决该分支中的冲突,并将其与当前分支同步来解决 Git 存储库中的冲突。

注意

只有工作区管理员可以将工作区重新连接到新分支。

  1. 在“源代码管理”窗格中,使用屏幕底部显示的上次同步分支 ID 检查新分支

    屏幕截图显示了如何通过选择向下箭头在“源代码管理”面板中检查新分支。

    屏幕底部显示的分支 ID 信息的屏幕截图。

    此步骤使用上次同步的 Git 状态从冲突分支创建一个新分支,然后再进行与更改冲突的更改。 可在“源代码管理”面板中看到所做的更改,但 Git 分支中没有任何需要更新的内容。 “签出分支”会保留当前工作区状态,因此更改分支时会保留未提交的更改。

  2. 将更改提交到新分支。 现在,此新分支包含了你对连接到 Git 分支早期版本的项目所做的更改,这些更改不会与你的更改冲突。

  3. 在 git 中,解决原始分支和新分支之间的冲突。

  4. 在 git 中,将新分支合并到原始分支

  5. 在 Fabric 中,将工作区切换回原始分支。