如何在并行的 VisualStudio 代码文件中看到“ gitdiff”?

我想知道如何在 VisualStudio 代码的终端中使用 git diff master origin/master命令查看文件。

我从我的远程存储库做了一个 git fetch,现在我想看到差异,但用命令只是在终端中显示我。

我想要的例子:

Screenshot of diff viewer in Visual Studio Code

176192 次浏览

在 VisualStudio 代码的左侧,有一个 Git 图标如下所示:

通过单击这个图标,然后双击 改变下列出的一个文件,您可以看到 Git 在两侧的差异。

您可以通过右键单击 探险家开放编辑列表中的一个文件并选择 为比较选择,然后右键单击第二个文件来进行比较并选择 与 < file _ name _ you _ choice > 进行比较,从而实现对任意两个文件的 diff

或者从键盘按 Ctrl + Shift + P并选择菜单 档案 & rarr; 比较活动文件与..。,您将看到最近的文件列表。例如:

Enter image description here

如果你想看到从 不同的分支不同的变化,有一些额外的工作。例如,您希望在 特色分支中看到上次 N提交后的所有更改。

  1. 将 VisualStudio 代码添加到 ~/. gitconfig文件中,将其设置为默认的难题工具。

    [diff]
    tool = vscode
    [difftool "vscode"]
    cmd = code --wait --diff $LOCAL $REMOTE
    
  2. Go to your Git project. Type in:

    git difftool \{\{branch you want to check with}}, for example git difftool master

  3. You will be prompted for each file, if you want to open it in Visual Studio Code or not.

在 VisualStudio 代码中打开文件 ~/.gitconfig:

code  ~/.gitconfig

复制 ~/.gitconfig中的下列行:

[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = code --wait --diff $LOCAL $REMOTE

保存更改。通过运行 Ctrl + Shift +’在 VisualStudio 代码中打开终端。在终端中运行以下命令:

git difftool master origin/master

我回答了一个类似的问题 给你

但基本上你可以使用以下命令:

git difftool -x "code --wait --diff"

可以通过以下方法在 VisualStudio 代码中实现此目的

  1. 打开设置(窗口/Linux 文件 > 首选项 > 设置。 在 macOS 代码 > 首选项 > 设置)
  2. 搜索差异
  3. 特定的设置是 < em > Diff Editor: Render Side by Side 。

这里有一个查看自上次提交以来(在当前分支上)所做更改的简单方法:

  1. 单击 VS Code 左侧的 Git 图标
  2. 如果自上次提交以来对文件进行了更改,您将看到在“ CHANGES”下列出的文件
  3. 右键单击文件名(在“ CHANGES”下) ,然后单击“打开更改”
  4. 这将并排打开文件的两个版本,并突出显示更改

Image showing example of VS Code displaying changes

经过几个小时的搜索、安装和卸载扩展,似乎这已经在 VSC 中实现了。

只需点击右上角的图标-“打开更改” enter image description here

然后点击右上角的图标“打开文件”回到只看文件,不看更改

enter image description here

切换内联视图现在可用(在3个点上)

来自 1.48版本的发行说明:

在导航“源代码管理”视图时,在更改上按 Space 现在将打开它作为一个预览编辑器,并保持在源的焦点 控件视图,以便于键盘导航。

因此,您可以通过 downarrow通过您的 scm 文件的变化,并按下 Space打开一个差异视图。.焦点保持在 SCM 视图中,因此您可以继续这样做。

对于 VSCode 中的快速单文件差异视图,没有进一步的集成导航和编辑经验,你可以配置和使用 git difftool,正如其他答案所解释的那样——或者更安全(和全局) ,如下所示:

git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE"
git config --global diff.tool vscode   # optionally as default

为了获得这种自定义差异的完全集成体验,在 VSCode 中可以这样做:

# possibly commit or stash a dirty work tree before switching
git switch origin/master --detach  # new master in worktree
git reset master                   # old master as detached HEAD (diff base)

现在你可以像往常一样在 VSCode 中看到和使用这个“自定义差异”-作为工作树与 HEAD 的差异: 使用 git SCM 图标,双击/右键点击文件更改,切换内联差异视图,等等。

现在,您甚至可以在 diff 视图中直接处理该工作树。提交此类更改,如下所示:

git reset origin/master    # base for added changes only
# review the bare added delta again (in VSCode)
git add/commit ...
git branch/tag my_master_fixup   # name it

然后像往常一样合并新的主服务器,切换回功能分支,可能选择 my _ master _ fixup、 rebase 或其他任何东西。

如果您希望比较两个任意引用(例如比较分支和分支之间的引用,或者比较提交和另一个提交之间的引用) ,并且仍然可以轻松地一次查看所有文件,就像我们看到的索引更改一样。

  • 安装 GitLens扩展
  • 转到左窗格中的 源头控制。 如果你没有图标,那么你可以在菜单视图-> SCM (显示源代码控制)下查看或使用定义的快捷方式。
  • 展开最后一节 搜寻及比较
  • 点击按钮 比较参考文献..。
  • 选择引用,然后您将看到已更改的文件列表,单击其中一个文件将显示其更改。

Image showing the button

Vscode 本身能够显示任意两个文件之间的差异:

code --diff file1.txt file2.txt

我相信这是独立于 git diff的功能。

为了使这个答案有效,我们必须遵循几个步骤,尽管在以前的答案中已经重复了这些步骤,为了完整起见,我将重写这些步骤。

打开文件 ~/.gitconfig,并添加以下代码行:

[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = code --wait --diff $LOCAL $REMOTE

在一些答案中,建议的下一步是做 git difftool <local_branch> origin/<remote_branch>

然而,还有另一种可能性:

git fetch origin <remote_branch>
git difftool FETCH_HEAD

另外,为了防止那些烦人的提示出现,我们可以这样做:

git config --global difftool.prompt false

这里是与以前版本进行比较的另一种方法。

  1. Explorer面板上。
  2. 选择要比较的文件,然后打开上下文菜单(右击) ,然后选择 Select for Compare
  3. 再次打开上下文菜单,然后选择 Open Timeline。等待加载以前的更改。
  4. Timeline选项卡上,可以选择以前的版本并打开上下文菜单,然后单击 Compare with Selected

然后您将看到并排的 diff 文件。

compare with previous