直接按Ctrl+D(Windows/Linux)或Cmd+D(macOS)即可查看当前文件与上次提交的差异,无需选中文件或打开工具窗口,前提是文件已被Git跟踪;未跟踪或被忽略时会提示相应状态。

怎么看当前文件和上次提交的差异
直接按 Ctrl+D(Windows/Linux)或 Cmd+D(macOS),光标在编辑器任意位置时就能弹出差异视图。这个操作不依赖是否选中文件,也不需要先打开提交工具窗口——只要文件已被 Git 跟踪,就能立刻对比工作区与 HEAD 版本。
常见错误是点开项目工具窗口右键选“Git → Compare with Revision”,结果弹出一堆历史版本让你手动选,反而绕远路。其实 Ctrl+D 就是专为“看和上一次提交差在哪”设计的快捷入口。
- 如果文件从未被提交过,
Ctrl+D会显示“no changes to compare”,此时需先git add或通过 GoLand 的“Add”操作将其纳入暂存区 - 若文件被忽略(.gitignore 里有匹配规则),差异视图顶部会明确提示 “Ignored file”,不会报错但也不会显示任何内容
- 差异视图里点击行号左侧的
+或-图标,可单独暂存/撤销某几行改动,比全文件操作更精准
怎么查某个文件在不同分支间的修改
先确保你已在 Git 工具窗口(Alt+9)里切换到目标分支,再右键该文件 → “Git → Compare with Branch…”,然后从弹出列表中选另一个分支名。注意:这里不是比较“本地 vs 远程”,而是两个已检出分支之间的快照差异。
容易踩的坑是误以为“Compare with Remote”能查分支差异——它实际只比当前分支 HEAD 和对应远程追踪分支(如 origin/main)的差异,且要求远程分支已同步(git fetch 过)。如果刚切完分支还没 fetch,选 remote 项会灰掉。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 想快速确认某次提交改了什么?在 Git 日志里右键那个 commit → “Compare with Current Branch”
- 对比时若发现大量 unrelated changes,大概率是两个分支的共同祖先太远,建议先用
git merge-base branch-a branch-b查共同基点,再针对性比对 - GoLand 默认用内嵌 diff,但如果你习惯外部工具(如 meld),可在设置 → Version Control → Git → Path to Git executable 下方勾选 “Use external diff tool”
搁置更改后怎么还原对比
搁置(Stash)本质是把未提交改动打包成一个临时提交,所以它和普通 commit 一样可参与 diff。打开“Commit”工具窗口(Ctrl+K),切换到 “Stashes” 标签页,展开某条 stash 记录,点击右侧的 ... → “Show Diff”。
这里的关键逻辑是:stash 的 diff 显示的是“应用该 stash 后会引入哪些变更”,而不是“stash 本身包含什么”。也就是说,它等价于你在干净工作区执行 git stash apply 后看到的改动。
- 如果 stash 列表为空但你知道刚搁置过,检查是否启用了“合并 Stash 和 Local Changes 标签页”(设置 → Version Control → Git → Stash),启用后 stash 会混在 “Local Changes” 里,需手动筛选
- 想对比 stash 和某个具体 commit?右键 stash 条目 → “Apply Stash and Compare with Revision”,IDE 会先临时应用再比对,避免污染当前工作区
- stash 名称带中文或特殊字符时,GoLand 可能无法正确解析路径,导致 diff 窗口空白——此时改用命令行
git stash show -p stash@{0}更可靠
为什么 diff 里看不到刚保存的修改
最常见原因是文件未被 Git 跟踪。GoLand 的 diff 功能只对 Git 管理的文件生效,新创建的文件默认处于 “Unversioned Files” 状态,右键菜单里没有 “Compare with Revision” 选项,Ctrl+D 也会失效。
另一个隐蔽原因是文件编码或行尾符不一致。比如你用 Windows 编辑器保存了 CRLF 行尾,而仓库默认是 LF,Git 会把整文件标记为“modified”,但 GoLand 的 diff 可能只高亮行尾差异而不显示内容变化——此时状态栏会显示 “Line separators differ”,需统一设置(File → Settings → Editor → Code Style → Line Separators)。
- 确认文件是否被跟踪:在项目工具窗口里看文件图标,灰色文档图标 = untracked,蓝色文档图标 = tracked
- 临时绕过 Git 检查:按
Ctrl+Shift+A输入 “Compare with Clipboard”,可对比当前文件和剪贴板内容,适合验证格式化前后差异 - 如果 diff 窗口始终空白但 Git 命令行能正常显示,大概率是 gopls 语言服务器卡住,重启 GoLand 或执行 “File → Invalidate Caches and Restart”

















