如何使用 git diff --no-index 仅在 dir2 FROM dir1 中显示增量 missing/changes
How can I use git diff --no-index to only show incremental missing/changes in 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
。有关完整列表,请参阅 the documentation。
现在考虑 --diff-filter
选项。您可以告诉 Git 忽略(不显示任何有关)状态为一个或多个这些字母的文件,或者 仅显示 状态为这些字母中的一个或多个的文件。
您似乎想查看状态为 D
(丢失)或 M
(文件存在于两边但不同)的内容。所以 --diff-filter=DM
将是正确的过滤器。
您可能希望完全禁用重命名检测 (git diff --no-renames
) 或允许 R
状态文件;这取决于您的预期用途。
我想显示 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
。有关完整列表,请参阅 the documentation。
现在考虑 --diff-filter
选项。您可以告诉 Git 忽略(不显示任何有关)状态为一个或多个这些字母的文件,或者 仅显示 状态为这些字母中的一个或多个的文件。
您似乎想查看状态为 D
(丢失)或 M
(文件存在于两边但不同)的内容。所以 --diff-filter=DM
将是正确的过滤器。
您可能希望完全禁用重命名检测 (git diff --no-renames
) 或允许 R
状态文件;这取决于您的预期用途。