如何获取没有被删除的git diffs文件列表?

时间:2019-02-04 22:31:09

标签: git

当前,我使用此命令来获取developmaster分支之间已更改文件的列表:

git diff remotes/origin/master origin/develop --name-only > diffs.txt

是否可以排除在develop上删除的文件?

1 个答案:

答案 0 :(得分:4)

TL; DR:--diff-filter=d

更长,但仍然不是很长:请参见--diff-filter选项。例如,diff-filter=AM仅保留状态为A或M的那些条目。这些字母代码与git diff --name-status显示的字母代码相同(因此,{{1 }})-要显示仅 个已删除文件,您需要git status --short

大写字母包括在内,因此,如果您想要除 D之外的所有内容,则可以使用--diff-filter=D,它是除D之外的所有可能代码,但是有一个较短的变体:小写表示排除,因此--diff-filter=ABCMRTUX表示除状态码D 之外的所有内容,这当然是您想要的。

请注意,在许多情况下,绝不应该出现多个代码,例如,U(未合并)只能在合并发生冲突时发生,而X(未知)则根本不会出现(这是Git声明自我检测错误的占位符) )。只有打开相应的选项,代码B和C才会出现。仅当您打开重命名检测时,代码R才会出现,但默认情况下,它在Git 2.9及更高版本中处于打开状态。代码T很少见:这意味着常规文件已被符号链接替换,反之亦然,或者说子模块现在是常规文件或符号链接,反之亦然。