You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单条终端命令打开VS Code暂存与工作副本的并排diff视图?

如何用git difftool直接打开VS Code对比暂存与工作副本的main.rs

问题场景

我的Git仓库位于~/Desktop/ML/Books,对其中的ProgrammingRust/projs/actix-gcd/src/main.rs文件做了以下操作:

  • 修改后暂存并提交变更
  • 再次修改文件并暂存变更
  • 第三次修改文件但未暂存

已在全局~/.gitconfig中设置VS Code为difftool,但执行git difftool ProgrammingRust/projs/actix-gcd/src/main.rs时,并未显示暂存与未暂存版本的对比,而是将当前文件与一个未知文件进行对比。需要通过单条终端命令直接打开VS Code的并排diff视图,对比该文件的暂存版本与工作副本,无需额外GUI操作。


解决方案

1. 正确调用git difftool命令

要直接对比暂存版本和工作副本的差异,必须加上--staged(或别名--cached)参数,指定目标文件:

git difftool --staged ProgrammingRust/projs/actix-gcd/src/main.rs

执行这条命令后,VS Code会自动以并排对比模式打开该文件的暂存版本和当前工作副本,无需手动点击"Open Changes"按钮。

2. 验证VS Code的difftool配置

如果上述命令仍未生效,检查你的~/.gitconfig是否包含正确的VS Code difftool配置:

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

关键参数说明:

  • --diff:强制VS Code以对比模式打开两个文件,这是实现并排视图的核心
  • --wait:让Git等待VS Code关闭后再结束命令,避免终端提前返回
  • $LOCAL和$REMOTE:Git会自动替换为暂存版本和工作副本的临时文件路径

如果之前的配置缺少--diff参数,就会导致VS Code只打开单个文件,这大概率是你之前遇到“未知文件对比”问题的原因。


内容的提问来源于stack exchange,提问作者Ziad Amerr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:22:09