繁体   English   中英

使用 Visual Studio 的 git 分支之间的差异

[英]Differences between git branches using Visual Studio

我试图了解如何使用 VS 2015 比较分支或提交。

使用其他 Git 程序,我可以轻松比较版本,但在 VS 中看不到它是如何完成的。

任何人都可以帮忙吗?

要在 Microsoft Visual Studio(使用 MVS2015)中比较特定对象(解决方案、项目、源文件...):

  1. 在解决方案资源管理器中找到对象,并调出上下文菜单(右键单击):选择“查看历史记录...”。 这将打开此对象的历史记录窗口,其中包含对象更改的所有提交(来自任何分支)。
  2. 多选要比较的两个提交(左键单击第一个,Ctrl-左键单击第二个)。
  3. 现在调出任一选定提交的上下文菜单(右键单击):选择“比较...”。 这会为各个提交中的对象打开 Diff 窗口(红色线中突出显示的差异从第一次提交中删除,或在第二次提交中添加的绿色线中)。 您可以使用“差异”窗口中的滚动条,或功能区中的“上一个差异”和“下一个差异”按钮来查看对象的差异。

我不确定是否有一种方法可以比较两个不同提交中的所有项目(我只是调用 GitKraken - 免费用于非商业目的 - 或在我的本地存储库中为 git 调用任何其他 GUI)。 不过 Gitkraken 非常简单:选择任意两个提交,这些提交之间的所有差异都触手可及。

我只是花了一些时间玩当前版本的 VSTS 并弄明白了(截至 2016 年 10 月):

  1. 转到代码 -> 分支
  2. 单击更新日期右侧的提交差异计数,如下面的屏幕截图所示: vsts_screenshot

这将带您进入一个页面,其中显示了两者之间的提交差异和文件比较

截至 2017 年 10 月,当您右键单击 Code->Branches 下的一个分支时,您将获得此菜单。 单击比较分支。

在此处输入图片说明

如果要比较 Visual Studio 2017 或更高版本中的两个不同分支,可以通过使用“比较提交”功能来执行此操作,同时在“查看历史记录”窗口中查看单个分支的两个不同提交。 但显而易见的问题是,其中一个分支必须包含另一个分支的头部提交才能进行比较,而大多数情况下并非如此。 幸运的是,有一种简单的方法可以通过从一个分支创建一个新的临时分支并合并到另一个分支来实现这一点:

 git checkout -b temp-compare-branch branch-1-name --no-track
 git merge branch-2-name

请注意,如果您遇到合并冲突,您可以快速随机选择一侧或另一侧! 您如何解决冲突并不重要,因为您实际上并不关心合并提交。 您只需要完成合并,以便合并提交的父项都位于同一分支中。 完成后,您可以“查看历史记录”新的临时分支,然后按住 Control 键单击两个相应的提交以选择它们,然后右键单击并“比较提交”以实现您的目标。

旁注:通常当我不得不这样做时,结果证明我最感兴趣的是一个分支上的变化,因为它从另一个分支分离出来。 在这种情况下,我通常发现查看每个分支的 HEAD 与合并基础的比较更有用,这会产生“一个分支上的一组更改,而另一个分支中没有”。 要查找合并基础,您只需使用:

git merge-base branch-1-name branch-2-name

该命令的输出是一个提交 ID,您可以将该提交与每个分支上的 HEAD 分别进行比较,甚至不需要创建临时分支,如果这组特定更改正是您实际需要的。

如果您使用 Azure DevOps,这可以轻松完成。 (我意识到这并不能真正回答问题,但我认为其他人可能会觉得这有帮助。)

转到 Azure DevOps 中的存储库。 去分行。 当您将鼠标向右移动时,会出现一个椭圆。

单击设置比较分支。 现在其他分支将列出他们在“Behind |Behind | Ahead' 与这个分支有关。

单击比较分支。 可以设置任意两个分支,查看文件差异和提交差异。 比较的方向很重要。

Azure DevOps 分支比较片段

在 VS-2022 中,您可以 go 到View->Git Repository

在此处输入图像描述

然后右键单击要比较的分支和 select Compare '<current branch>' with '<other branch>'

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM