是否有可能要求git diff在其diff输出中包括未跟踪的文件,或者我最好的选择是使用git添加新创建的文件和我编辑过的现有文件,然后使用:

git diff --cached

?


当前回答

假设您没有本地提交,

git diff origin/master

其他回答

我相信您可以通过简单地提供两个文件的路径来区分索引文件和未跟踪文件中的文件。

git diff --no-index tracked_file untracked_file

假设您没有本地提交,

git diff origin/master

对于一个文件:

git diff --no-index /dev/null new_file

对于所有新文件:

for next in $( git ls-files --others --exclude-standard ) ; do git --no-pager diff --no-index /dev/null $next; done;

别名:

alias gdnew="for next in \$( git ls-files --others --exclude-standard ) ; do git --no-pager diff --no-index /dev/null \$next; done;"

对于所有修改和新文件组合为一个命令:

{ git --no-pager diff; gdnew }

使用可以暂存新文件和区分暂存文件的想法,您可以将这两者结合起来查看差异,我发现它使用起来很简单。

添加您想要查看差异的文件。在您的情况下,只添加未跟踪的文件。您可以选择只添加那些想要查看差异的文件。 Git stash && Git添加。git隐藏pop 不同的阶段 Git diff——阶段性的 如果需要,重置暂存文件 git重置

综上所述,

   git stash && git add . && git stash pop && git diff --staged && git reset 

这对我来说很管用:

git add my_file.txt
git diff --cached my_file.txt
git reset my_file.txt

最后一步是可选的,它将使文件保持之前的状态(未跟踪)

如果你正在创建一个补丁也有用:

  git diff --cached my_file.txt > my_file-patch.patch