如何展示我当前工作目录和上一次提交之间的差异?

5

我正在使用git,并且需要在差异结果中包含未跟踪的文件。那么我必须执行什么命令才能获取当前工作目录和HEAD之间的所有差异,即使部分差异存在于新文件添加中?

您可以执行以下命令来获取所有差异(包括未跟踪的文件): git diff HEAD

注意:如果你只是创建了新文件,git diff 将不会显示任何内容 --(在答案评论中提到) - tjb
1个回答

9

嗯,git diff?毕竟这就是它的作用。

更新:“未在暂存区的文件”并不意味着“未被跟踪的文件”,它们是两个不同的类别。当您使用git add命令添加文件或更改时,它们会变成“已暂存”状态。未被跟踪的文件是指当前没有被 Git 跟踪的文件,根据您的评论,这些似乎是您询问的文件。我不知道有什么方法可以让 Git 显示未被跟踪的文件的 diff。这是没有意义的,因为这些文件没有被跟踪。您所要求的只是查看某些文件的内容。Git 有能力使用 ls-files 列出未被跟踪的文件,所以如果您在一个 *nix 类型的环境中,您可以轻松构建一个命令来完成您所寻找的功能:

git ls-files -o | xargs cat
-o选项告诉它列出所有未跟踪文件的名称。上述内容自然只会将所有未跟踪文件的内容打印到标准输出(stdout)。

当我在工作目录中只添加了新文件时,什么也没有显示出来。在问题正文中,我写道“需要包含未在暂存区域中的文件”。无论如何,谢谢。 - user1785721
关于分阶段和未跟踪的文件,你说得对,我在指未跟踪的文件时说成了“已分阶段”。我会更新我的问题。但是我问的有意义,想一想... 我想要在执行git add .之前查看将被添加到我已分阶段的内容,并且为此我需要一种结合了git diffgit ls-files -o | xargs cat的方式。我认为Git一定有一条命令可以得到我想要的结果,Git以很多方式与工作目录进行交互,我认为这可能是一个好方法,我不同意你“这没有任何意义,因为它们都未被跟踪”的想法。 - user1785721

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接