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

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

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

我想要的示例:

【问题讨论】:

    标签: git visual-studio-code git-diff git-difftool


    【解决方案1】:

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

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

    【讨论】:

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

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

      [diff]
          tool = vscode
      [difftool "vscode"]
          cmd = code --wait --diff $LOCAL $REMOTE
      
    2. 转到您的 Git 项目。输入:

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

    3. 系统会提示您输入每个文件,是否要在 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 中实现此目的

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

    【讨论】:

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

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

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

    【讨论】:

      【解决方案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 功能无关。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2016-03-02
                • 2017-10-16
                • 1970-01-01
                • 2016-10-20
                • 2022-01-12
                • 1970-01-01
                • 2022-12-03
                • 2018-07-25
                相关资源
                最近更新 更多