如何在 Visual Studio 代码并排文件中查看 'git diff'?
How can I see 'git diff' on the Visual Studio Code side-by-side file?
我想知道如何在 Visual Studio 代码的终端中使用命令 git diff master origin/master
查看文件。
我从我的远程存储库中执行了 git fetch
,现在我想查看差异,但使用命令只在终端中显示。
我想要的示例:
在Visual Studio代码中,左侧有一个Git图标,如下所示:
通过单击此图标,然后双击 更改 下列出的文件之一,您可以看到两侧的 Git 差异。
您可以 diff
任意两个文件,方法是首先右键单击 EXPLORER 或 OPEN EDITORS 列表中的文件,然后selecting Select for Compare 然后右键单击要比较的第二个文件并 select Compare with 。
或者通过键盘点击 Ctrl + Shift + P 和 select 菜单 File → Compare Active File With... 您将看到最近文件的列表。示例:
如果您想查看不同分支的差异变化,还有一些额外的工作。例如,您想在 Feature 分支.
中查看最后 N 次提交的所有更改
将 Visual Studio 代码添加到 ~/.gitconfig 文件中,将其设置为默认 difftool。
[diff]
tool = vscode
[difftool "vscode"]
cmd = code --wait --diff $LOCAL $REMOTE
转到您的 Git 项目。输入:
git difftool {{你要检查的分支}},例如 git difftool master
系统会提示您输入每个文件,是否要在 Visual Studio 代码中打开它。
打开 Visual Studio 中的文件 ~/.gitconfig
代码:
code ~/.gitconfig
在~/.gitconfig
中复制以下行:
[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = code --wait --diff $LOCAL $REMOTE
保存更改。通过 运行 Ctrl + Shift + ` 在 Visual Studio 代码中打开一个终端。 运行 在终端中输入以下命令:
git difftool master origin/master
我回答过类似的问题。
但基本上你可以使用下面的命令:
git difftool -x "code --wait --diff"
您可以在 Visual Studio 代码中实现此
- 打开设置(在 window/linux 文件 > 首选项 > 设置。
在 macOS 代码 > 首选项 > 设置上)
- 搜索差异
- 具体设置为Diff Editor:Render Side by Side。标记复选框。
这是查看自上次提交(在当前分支上)以来所做更改的简单方法:
- 单击 VS Code 左侧的 Git 图标
- 如果您在上次提交后对文件进行了更改,您将看到 "CHANGES"
下列出的文件
- 右键单击文件名(在 "CHANGES" 下)并单击 "Open Changes"
- 这将并排打开文件的两个版本并突出显示更改
经过几个小时的搜索、安装和卸载扩展,这似乎已经在 VSC 中实现了。
只需点击右上角的图标 - "Open changes"
然后返回到仅查看文件,而不是更改,方法是单击...右上角的图标 - "Open file"
现在可以切换内联视图(在 3 个点上)
As you navigate the Source Control view, pressing Space on a change
will now open it as a preview editor and keep the focus in the Source
Control view, for easier keyboard navigation.
因此您可以 向下箭头 通过您的 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 图标,double/right-click文件更改、切换内联差异视图等。
现在您甚至可以直接在差异视图中直接处理该工作树。要提交此类更改,请执行以下操作:
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 或其他任何东西..
如果您想在两个任意引用之间进行比较 - 例如在分支与分支之间进行比较,或者在一个提交与另一个提交之间进行比较 - 并且仍然可以轻松地一次查看所有文件,就像我们看到索引更改一样。
- 安装 GitLens 扩展程序
- 转到左侧窗格中的源代码管理。
如果你没有这个图标,那么你可以在菜单 View -> SCM (Show source control) 下查看或使用定义的快捷方式。
- 展开最后一部分搜索并比较
- 单击按钮 比较参考...
- 选择引用,然后您将看到已更改文件的列表,单击一个文件将并排显示其更改。
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
我想知道如何在 Visual Studio 代码的终端中使用命令 git diff master origin/master
查看文件。
我从我的远程存储库中执行了 git fetch
,现在我想查看差异,但使用命令只在终端中显示。
我想要的示例:
在Visual Studio代码中,左侧有一个Git图标,如下所示:
通过单击此图标,然后双击 更改 下列出的文件之一,您可以看到两侧的 Git 差异。
您可以 diff
任意两个文件,方法是首先右键单击 EXPLORER 或 OPEN EDITORS 列表中的文件,然后selecting Select for Compare 然后右键单击要比较的第二个文件并 select Compare with
或者通过键盘点击 Ctrl + Shift + P 和 select 菜单 File → Compare Active File With... 您将看到最近文件的列表。示例:
如果您想查看不同分支的差异变化,还有一些额外的工作。例如,您想在 Feature 分支.
中查看最后 N 次提交的所有更改将 Visual Studio 代码添加到 ~/.gitconfig 文件中,将其设置为默认 difftool。
[diff] tool = vscode [difftool "vscode"] cmd = code --wait --diff $LOCAL $REMOTE
转到您的 Git 项目。输入:
git difftool {{你要检查的分支}},例如 git difftool master
系统会提示您输入每个文件,是否要在 Visual Studio 代码中打开它。
打开 Visual Studio 中的文件 ~/.gitconfig
代码:
code ~/.gitconfig
在~/.gitconfig
中复制以下行:
[diff]
tool = default-difftool
[difftool "default-difftool"]
cmd = code --wait --diff $LOCAL $REMOTE
保存更改。通过 运行 Ctrl + Shift + ` 在 Visual Studio 代码中打开一个终端。 运行 在终端中输入以下命令:
git difftool master origin/master
我回答过类似的问题
但基本上你可以使用下面的命令:
git difftool -x "code --wait --diff"
您可以在 Visual Studio 代码中实现此
- 打开设置(在 window/linux 文件 > 首选项 > 设置。 在 macOS 代码 > 首选项 > 设置上)
- 搜索差异
- 具体设置为Diff Editor:Render Side by Side。标记复选框。
这是查看自上次提交(在当前分支上)以来所做更改的简单方法:
- 单击 VS Code 左侧的 Git 图标
- 如果您在上次提交后对文件进行了更改,您将看到 "CHANGES" 下列出的文件
- 右键单击文件名(在 "CHANGES" 下)并单击 "Open Changes"
- 这将并排打开文件的两个版本并突出显示更改
经过几个小时的搜索、安装和卸载扩展,这似乎已经在 VSC 中实现了。
只需点击右上角的图标 - "Open changes"
然后返回到仅查看文件,而不是更改,方法是单击...右上角的图标 - "Open file"
现在可以切换内联视图(在 3 个点上)
As you navigate the Source Control view, pressing Space on a change will now open it as a preview editor and keep the focus in the Source Control view, for easier keyboard navigation.
因此您可以 向下箭头 通过您的 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 图标,double/right-click文件更改、切换内联差异视图等。
现在您甚至可以直接在差异视图中直接处理该工作树。要提交此类更改,请执行以下操作:
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 或其他任何东西..
如果您想在两个任意引用之间进行比较 - 例如在分支与分支之间进行比较,或者在一个提交与另一个提交之间进行比较 - 并且仍然可以轻松地一次查看所有文件,就像我们看到索引更改一样。
- 安装 GitLens 扩展程序
- 转到左侧窗格中的源代码管理。 如果你没有这个图标,那么你可以在菜单 View -> SCM (Show source control) 下查看或使用定义的快捷方式。
- 展开最后一部分搜索并比较
- 单击按钮 比较参考...
- 选择引用,然后您将看到已更改文件的列表,单击一个文件将并排显示其更改。
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