抑制 git 中已删除文件的差异
Posted
技术标签:
【中文标题】抑制 git 中已删除文件的差异【英文标题】:Suppressing diffs for deleted files in git 【发布时间】:2011-04-11 03:59:43 【问题描述】:我想快速了解我的存储库中的本地更改,但我不想要显示已删除文件的差异,因为每一行都是减号。
基本上,我想要'git diff HEAD <list of modified files only>'
之类的东西。在理想情况下,它前面会显示已删除和添加的文件列表,但不会显示其中的差异。
我主要是通过编写一个执行此操作的实用程序:
git diff HEAD `git status | grep modified | cut -d : -f 2`
当我想知道是否有一些 git-y 方法来代替它时。有没有我失踪的标志?我也想保留颜色输出。
【问题讨论】:
【参考方案1】:在 Git 版本 1.8.5 和更新版本中,您可以使用 --diff-filter
选项并指定“d”(小写)来告诉它排除已删除的文件。
在低于 1.8.5 的 Git 版本中,您可以使用 --diff-filter
选项并指定除“D”(已删除)之外的所有条件:
【讨论】:
--diff-filter=M 仅用于修改 或者只是git diff --diff-filter=d
--diff-filter
的文档:git-scm.com/docs/…
感谢您详细说明与 Git 版本相关的不同行为,我刚遇到 V1.7 版本的问题,这很有帮助!【参考方案2】:
git diff -D
(或等效的git diff --irreversible-delete
)将省略已删除文件的差异主体。我认为添加的文件没有等价物。
【讨论】:
此选项与其他选项不同,保留摘要diff --git a/
... deleted file mode 100644
... index
...【参考方案3】:
与Dan Moulding
发布的答案几乎相同,但您可能希望指定不想显示的内容,以及隐藏已删除文件的内容:
git diff --diff-filter=d
【讨论】:
【参考方案4】:您也可以使用 -M 来尝试查找被移动的文件
git diff -M -D
更多可能会通过以下方式获得更多信息: git diff --help (选项 -B 也可能很有趣)
【讨论】:
【参考方案5】:在上一个答案的基础上,我想添加文档中关于 git 版本 2.33.0 的内容
--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]
Select only files that are Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R), have their type (i.e. regular file, symlink, submodule, ...) changed (T), are Unmerged (U), are Unknown (X), or have had their
pairing Broken (B). Any combination of the filter characters (including none) can be used. When * (All-or-none) is added to the combination, all paths are selected if there is any file that matches other criteria in
the comparison; if there is no file that matches other criteria, nothing is selected.
Also, these upper-case letters can be downcased to exclude. E.g. --diff-filter=ad excludes added and deleted paths.
Note that not all diffs can feature all types. For instance, diffs from the index to the working tree can never have Added entries (because the set of paths included in the diff is limited by what is in the index).
Similarly, copied and renamed entries cannot appear if detection for those types is disabled.
【讨论】:
以上是关于抑制 git 中已删除文件的差异的主要内容,如果未能解决你的问题,请参考以下文章