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

Mah*_*oni 3 git

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

ojr*_*ask 5

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

$ git ls-files -o
Run Code Online (Sandbox Code Playgroud)

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

编辑:

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

对未跟踪(未编入索引)的文件进行差异化的一个问题是没有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
Run Code Online (Sandbox Code Playgroud)

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

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

  • 有用......但没有回答这个问题.它列出了文件,但没有*显示OP正在寻找的那些文件的差异*.此外,它还列出了.gitignored文件,这可能不是您在查看或未跟踪文件时所需的文件. (3认同)