我可以在未跟踪的文件上使用 git diff 吗?

14 浏览
0 Comments

我可以在未跟踪的文件上使用 git diff 吗?

我可以让git diff命令在其差异输出中包含未跟踪的文件吗?还是我最好将新创建的文件和我编辑过的现有文件添加到git add中,然后使用git diff --cached命令?

0
0 Comments

你可以在未跟踪的文件上使用git diff吗?

原因:

如果你不想将文件添加到索引中,正如接受的答案建议的那样,这里有另一个选择。如果文件是未跟踪的,显然diff是整个文件,所以你可以使用less来查看它们。通过less $(git ls-files --others --exclude-standard),你可以在文件之间导航。

解决方法:

如果你需要以补丁格式导出diff,你也可以将其与git diff结合使用。通过git ls-files --others --exclude-standard -z | xargs -0 -n 1 git --no-pager diff /dev/null | less,你可以将未跟踪的文件以补丁格式显示。你也可以将输出重定向到文件中,或者在这种情况下使用其他的diff命令。

此外,你还可以运行git diff /dev/null <untracked_tile>以获取以补丁格式而不仅仅是文件显示的补丁。

结合git diff命令,可以使用上述方法解决在未跟踪的文件上使用git diff的问题。通过使用适当的命令行选项和组合,你可以以补丁格式查看未跟踪的文件,并在文件之间导航。请注意在使用git命令和xargs命令时要添加适当的选项,以避免出现文件名包含回车或其他奇怪字符的错误。

0
0 Comments

可以使用git diff对未跟踪的文件进行比较。可以通过提供文件的路径来比较索引中的文件和未跟踪的文件。如果你有多个自上次提交以来创建的未跟踪文件,也可以使用git diff --no-index命令来比较这些文件。你还可以使用git diff --no-index untracked_file_1 untracked_file_2命令来获取git diff的语法高亮等效果。如果只想获取未跟踪文件的diff输出,可以使用git diff --no-index -- /dev/null 命令。如果需要查看单个文件的内容,可以使用cat untracked_file_1命令。这种方法不需要更改git的索引。在Git for Windows中,使用git diff --no-index -- /dev/null .gitignore命令可能会出错。此外,还可以使用其他工具如colordiff或diff --color来对单个文件进行带有颜色的diff比较。最后,需要注意的是,之前在Git Bash中可能无法使用git diff --no-index -- /dev/null命令,但现在已经可以使用了。

0
0 Comments

问题的出现原因:在使用git diff命令时,无法对未跟踪的文件进行比较。

解决方法:可以使用git add -N命令将文件添加到索引中,使其变成一个零长度的blob。这样,原本的“未跟踪”文件就变成了一个修改,用来添加所有内容到这个零长度的文件中,并且这个修改会在“git diff”命令的输出中显示出来。

此外,也可以使用git update-index --add --cacheinfo命令来模拟git add -N的效果。

在Git 2.5版本中,这个问题将会得到修复,即“待添加的文件”不再显示在“待提交”中。

如果想要一次性添加所有未跟踪的文件并进行比较,可以使用git add -N .命令。

如果想要撤销git add -N的操作,可以运行git reset --mixed命令。

需要注意的是,使用--intent-to-add选项时,需要手动创建空文件,否则会报错。

0