git - 如何使用 git diff --no-index 仅显示 dir2 FROM dir1 中的增量丢失/更改
问题描述
我想显示 2 个任意非 git 目录之间的递归差异(我知道我可以通过传递 --no-index 来做到这一点);dir1 和 dir2 但须遵守以下具体说明:
- 我只想查看与 dir1 不同的内容(文件和文件内容);我不关心 dir2 中的其他内容。我想知道 dir2 中缺少的 dir1 中的内容或 dir2 中更改的 dir1 中的内容
我愿意使用diff
代替git diff
或同时使用git difftools
(尽管文档说您可以将任何git diff
arg 与 git difftools 一起使用,但我认为它不能以 --no-index 方式使用 [比较 2 个任意目录])。
解决方案
该git diff
命令有许多选项。首先开始--name-status
,看看它做了什么:
git diff --no-index --name-status <dir1> <dir2>
现在您已经看到了它的输出,请记下状态字母:
A
表示添加:右侧的文件(dir2)是新的,即左侧没有对应的文件。D
表示已删除:左侧的文件 (dir1) 已丢失。M
意味着修改,R
意味着重命名,T
意味着模式改变(符号链接到文件,反之亦然),还有更多的可能性取决于你提供给git diff
. 有关完整列表,请参阅文档。
现在考虑这个--diff-filter
选项。您可以告诉 Git忽略(不显示任何有关)状态为这些字母中的一个或多个的文件,或仅显示状态为这些字母中的一个或多个的文件。
似乎您想查看具有状态D
(丢失)或M
(文件存在于双方但不同)的事物。--diff-filter=DM
正确的过滤器也是如此。
您可能希望完全禁用重命名检测 ( git diff --no-renames
) 或允许R
状态文件;这取决于您的预期用途。
推荐阅读
- azure - Azure 在非工作时间启动/停止 VM 解决方案 - 按标签选择 VM
- excel - 防止在按钮单击时打开 VBE
- php - 将 PHP 独白消息的上下文深入到 ELK 中
- go - 命令需要换行才能完成
- java - JPA 工具创建实体,名称类不正确
- sprite-kit - SpriteKit SKTextures 内存占用
- java - 如何在 Spring Controller 路由中呈现 html 文件?
- javascript - 数组 $data ['image'] 显示为空数组,无法将文件发送到 php
- javascript - 如何将上传的图像添加到对象数组中?
- java - 如何使用 Java Stream API 将 List 转换为 Map?