git - 我想查看两个合并提交之间的差异,仅更改第一个合并提交的文件
问题描述
通常,我在 git 中有这种情况
- 蓝色是
master
,并且有一个共同的祖先提交和两个合并提交 - 绿色是
feature-branch-1
或feat1
- 红色是
feat2
两个分支都是由 git 自动合并的,但我知道有一些“冲突”的更改,我担心它们是如何解决的,但是,显示任何两个提交的差异会在许多不相关的文件中产生大量更改。
是否可以看到和的合并提交之间的差异,但只有出现在其中的文件受 影响?feat1
feat2
feat1
feat2
解决方案
您想列出两个合并提交修改的文件:
1 - 列出一次提交的更改文件:
git show <SHA> --name-only --pretty=format:
2 - 比较两个合并提交的文件列表并获得交集:
comm -12 <(git show SHA1--name-only --pretty=format: |sort -u) <(git show SHA2--name-only --pretty=format: |sort -u)
3 - 现在您有了文件列表,您可以循环比较所有文件,例如:
for r in `comm -12 <(git show SHA1--name-only --pretty=format: |sort -u) <(git show SHA2--name-only --pretty=format: |sort -u)`; do git difftool SHA1 SHA2 "$r"; done
当然,您必须通过合并提交替换 SHA1 和 SHA2。
推荐阅读
- android - 是否依赖于 Flutter SDK 平台
- vim - VIM:设置 term=xterm 更改
到 ,它是可逆的吗? - mysql - 案例陈述的问题(按课程数量组织部门)
- epicor10 - “oTrans”不是“脚本”的成员
- gitlab - 如何在 GitLab CI 的 `git clean` 运行时解决异步进程创建文件?
- unity3d - 在 Unity Shader 中计数并输出到脚本
- mongodb - 如何将 RethinkDb 迁移到 MongoDb?
- sass - Sass:无法加载内核二进制文件:内核二进制格式版本无效
- java - 以 Commons CLI 样式接受参数的控制台应用程序的 Dockerfile
- javascript - .splice() 我在做什么错