如何在 Visual Studio Code 并排文件中看到“git diff”?

Posted

技术标签:

【中文标题】如何在 Visual Studio Code 并排文件中看到“git diff”?【英文标题】:How can I see 'git diff' on the Visual Studio Code side-by-side file? 【发布时间】:2018-12-21 07:26:36 【问题描述】:

我想知道如何在 Visual Studio Code 的终端中使用命令 git diff master origin/master 将文件视为文件。

我从远程存储库中执行了git fetch,现在我想查看差异,但使用命令只是在终端中显示。

我想要的示例:

【问题讨论】:

【参考方案1】:

在 Visual Studio Code 的左侧,有一个如下所示的 Git 图标:

通过单击此图标,然后双击 Changes 下列出的文件之一,您可以看到两个方面的 Git 差异。

【讨论】:

为了完整起见,由于不是每个人都有显示的图标,请查看菜单 View ->SCM (Show source control) ctrl-shift-G 您也可以使用键盘快捷键⌘K V 打开预览,如VSCode keybindings 中所述。 我的 vscode 菜单上没有看到这个图标 这是插件吗? icon was updated 您的答案不适用于任何差异。这仅适用于显示当前更改与最新提交的差异。【参考方案2】:

您可以diff 任何两个文件,方法是首先右键单击EXPLORER打开编辑器 列表中的文件并选择选择比较 然后右键单击要比较的第二个文件并选择 比较

或者从键盘敲击 Ctrl + Shift + P 并选择菜单 FileCompare Active File With...,您将看到最近文件的列表。示例:

【讨论】:

首先,问题清楚地询问 git diff 在这种情况下不会有两个文件,而只有一个。其次,您需要在 VS Code 中安装另一个扩展,例如“compareit”,用于启用“Select for Compare”和“Compare with Selected”选项。 @KatariaA:第二点:它似乎是默认安装的(Visual Studio Code 1.41.1(在 Ubuntu 19.10 上))。你能确认一下吗? @PeterMortensen 是的,不需要扩展:code.visualstudio.com/docs/editor/versioncontrol#_viewing-diffs【参考方案3】:

如果您想查看不同分支差异变化,还有一些额外的工作。例如,您希望在 Feature 分支 中查看上次 N 次提交的所有更改。

    通过将 Visual Studio Code 添加到您的 ~/.gitconfig 文件中,将其设置为您的默认差异工具。

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

    转到您的 Git 项目。输入:

    git difftool 您要检查的分支,例如 git difftool master

    系统会提示您输入每个文件,是否要在 Visual Studio Code 中打开它。

【讨论】:

有没有一种方法可以让我们在 Visual Studio 代码中查看所有要区分的文件列表,而不是一个一个打开(就像我们通过单击 Visual Studio 左侧面板上的 git 图标看到的那样)? 相关 VS 代码文档:code.visualstudio.com/docs/editor/… @Sathya 完成 Boncho 共享的设置后 git difftool --dir-diff 应该可以完成工作,或者您可以在配置文件中使用 alias [alias] df = difftool --dir-diff 还有一个很好的可视化代码插件 'git-tree-compare' 可以显示你对特定参考分支的差异更改。见:marketplace.visualstudio.com/… 作为一次性命令,vscode本身可以用来比较两个文件:code --diff file1.txt file2.txt【参考方案4】:

在 Visual Studio Code 中打开文件 ~/.gitconfig

code  ~/.gitconfig

~/.gitconfig中复制以下行:

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

保存更改。通过运行 Ctrl + Shift + ` 在 Visual Studio Code 中打开一个终端。在终端中运行以下命令:

git difftool master origin/master

【讨论】:

"在 nano 这样的编辑器中打开文件 ~/.gitconfig:" - 为什么不直接在 VS Code 中打开它呢?那么只需要一个编辑器【参考方案5】:

我已经回答了类似的问题here。

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

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

【讨论】:

它指的是这个问题的(已删除)答案。【参考方案6】:

您可以通过以下方式在 Visual Studio Code 中实现此目的

    打开设置(在窗口/linux 文件 > 首选项 > 设置。 在 macOS 代码 > 首选项 > 设置上) 搜索差异 具体设置是Diff Editor:Render Side by Side。标记复选框。

【讨论】:

你能说得更具体点吗?你如何“打开设置”?左下角的“齿轮”图标?还有什么?回复editing your answer,不在 cmets 中。 如果您有待处理的更新 - 更改此设置后尝试重新启动可视代码。我有一个,只有在更新后才可以更改 @PeterMortensen,快一年过去了,但也许有人会觉得它有帮助。无论如何,在 Windows 上按CTRL+P,然后按>,然后输入Settings,菜单会向下滚动,我会寻找 UI 菜单选项。 @PeterMortensen CTRL+,【参考方案7】:

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

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

【讨论】:

【参考方案8】:

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

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

然后通过单击...右上角的图标 - “打开文件”返回只查看文件,而不是更改

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

来自v1.48 release notes:

当您浏览源代码控制视图时,按 Space 进行更改 现在将其作为预览编辑器打开并保持焦点在 Source 控制视图,便于键盘导航。

因此,您可以通过 scm 文件更改向下箭头 并点击 Space 以打开差异视图。焦点仍然在 SCM 视图中,因此您可以继续执行此操作。

【讨论】:

【参考方案11】:

对于 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 图标、双击/右键单击文件更改、切换内联差异视图等。 .

现在您甚至可以直接在差异视图中直接在该工作树上工作。要提交此类更改,请执行以下操作:

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

然后像往常一样合并新的 master,切换回功能分支,可能会挑选 my_master_fixup、rebase 或其他任何东西..

【讨论】:

【参考方案12】:

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

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

【讨论】:

我认为这需要 GitLens 扩展。 @Narfanar 你说得对,谢谢,我编辑了我的答案以反映这一点。【参考方案13】:

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

code --diff file1.txt file2.txt

我相信这与git diff 功能无关。

【讨论】:

以上是关于如何在 Visual Studio Code 并排文件中看到“git diff”?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2010 并排运行时丢失用户设置

如何在Visual Studio Code 中运行 Python

如何评价Visual Studio Code

visual studio code如何运行c

Deepin系统中如何安装Visual Studio Code

如何在 Linux 中安装 Visual Studio Code