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

如何在Git GUI/CLI工具中查看冲突文件的传入变更?

各工具查看合并冲突传入变更的实现方法

以下方法覆盖全类型合并冲突场景,不局限于modify/delete冲突,适配你日常使用的所有工具:

TortoiseGit

TortoiseGit默认仅在modify/delete冲突弹窗提供Show changes入口,全场景通用操作路径如下:

  • 在仓库目录右键打开菜单,进入TortoiseGit > Check for modifications
  • 在变更列表中找到标记为冲突的目标文件,右键唤出操作菜单
  • 选择Diff between > "base" and "theirs",即可打开diff视图,完整展示待合并分支相对于共同祖先提交对该文件做的所有改动,和modify/delete弹窗里Show changes的效果完全一致
  • 如果只想对比当前工作区文件和传入版本的差异,也可以选择Diff against > "theirs"

SourceTree

所有冲突类型都支持直接查看传入变更:

  • 合并触发冲突后,在文件状态面板找到冲突文件,右键点击
  • 展开Resolve Conflicts子菜单,选择Show Diff of Theirs (against base),即可弹出传入变更的完整diff
  • 打开内置的三方冲突解决窗口后,也可以在顶部diff视图切换栏直接选择Theirs视图,不用退出解决界面就能查看对方的全部改动,包括没有触发冲突标记、已经自动合入工作区的代码行

Fork

Fork的冲突交互对传入变更的支持最完善:

  • 冲突发生后,在工作区变更列表双击冲突文件,直接打开内置三方合并视图
  • 视图顶部提供三个版本的快速切换入口:Base(共同祖先版本)、Mine(当前分支版本)、Theirs(传入分支版本)
  • 点选Theirs即可看到传入分支对该文件的全部改动,非冲突的自动合入代码也会完整高亮展示
  • 也可以右键冲突文件,选择Compare > Compare with theirs,直接打开双栏对比视图查看传入版本和当前版本的差异

Git CLI 别名方案

如果习惯使用命令行,可以配置两个全局别名,一条命令就能查看传入变更,自动适配所有冲突场景:
执行以下两条命令完成全局配置:

# 查看指定冲突文件的完整传入变更
git config --global alias.diff-incoming '!f() { git diff $(git merge-base HEAD MERGE_HEAD) MERGE_HEAD -- "$1"; }; f'
# 一次性查看所有冲突文件的传入变更
git config --global alias.diff-incoming-all '!git diff $(git merge-base HEAD MERGE_HEAD) MERGE_HEAD -- $(git diff --name-only --diff-filter=U)'

配置完成后,合并触发冲突时:

  • 执行git diff-incoming <冲突文件路径>,即可输出指定文件的全部传入变更;如果你配置了可视化diff工具(比如VS Code、Meld),命令会自动调用可视化工具打开diff
  • 执行git diff-incoming-all,会自动列出所有冲突文件,批量输出全部传入变更,不用逐个指定文件名

针对你提到的代码跨文件移动场景,以上所有方法展示的传入变更,都会完整包含对方分支新增的const aVariableWhichWontConflict = calcIt(...)这类未触发冲突标记的改动,不会遗漏需要同步迁移的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 01:45:52