将未跟踪的文件显示为git diff

时间:2015-10-21 08:32:07

标签: git

使用git diff时,它只显示已被跟踪的文件。有没有办法显示未跟踪的文件以及差异?目标是获得一个也包含这个的git补丁,即我有一个以git diff开头并最终将其传递给git apply的脚本

1 个答案:

答案 0 :(得分:6)

您可以使用git ls-files显示未跟踪的文件:

$ git ls-files -o

-o是显示other类型文件的标志,表示未编入索引的任何内容。请参阅ls-files documentation at git-scm.com

编辑:

这个答案没有直接回答这个问题。

对未跟踪(未编入索引)文件进行差异化的一个问题是没有可供使用的git历史记录。您必须拥有未跟踪文件的一些历史记录(除非create差异适合您)。在评论中,执行此操作的方法如下:

git ls-files -o --exclude-standard | xargs git add; git diff --staged
^                                  ^                ^
ls all untracked files             pipe to add      diff the staged files

基本上你需要将所有文件添加到git索引,以便能够在更改上生成差异和补丁。

这会将未跟踪的文件添加到索引中,因此您必须在完成差异后自己记住并取消暂存。