"git diff" does nothing.

12 浏览
0 Comments

"git diff" does nothing.

我猜这可能是某个地方的配置错误,但我无法找出是哪里出错了。常规的git命令似乎可以正常工作,但是"git diff"却没有任何反应。为了安全起见,我从我的.gitconfig文件中移除了外部的diff工具。这是通过MacPorts安装的,并且是最新版本(1.7.2.2)。

我发现当我在我的工作空间中运行"git diff"时,它只是退出了,什么也没做。

$ git --version
git版本1.7.2.2
$ git diff
$ 

如果我退回到上一级目录,不在我的根工作空间下,输入"git diff"会得到这个结果:

$ git diff

usage: git diff [--no-index] <路径> <路径>

这可能是预期的行为,因为我不在一个git仓库下。

有什么想法可以用来解决这个问题吗?

0
0 Comments

问题原因:用户在工作树外使用"git diff"命令时,会得到一个错误信息,但这个错误信息可能不足以让用户意识到自己的错误。

解决方法:在错误信息中添加"Not a git repository",以便让用户意识到自己没有在一个git仓库中。

这种情况是在git 1.8.5或1.9版本之后出现的。在此之前,当用户在工作树外使用"git diff"命令时,会得到一个错误信息"usage: git diff --no-index "。但这个错误信息可能不足以让用户意识到自己的错误。因此,在新版本中,当用户在工作树外使用"git diff"命令时,会得到一个错误信息"usage: git diff --no-index Not a git repository",以便让用户意识到自己没有在一个git仓库中。

这个问题的解决方法是在错误信息中添加"Not a git repository"。这样,当用户在工作树外使用"git diff"命令时,会得到一个更明确的错误信息,以便让用户意识到自己没有在一个git仓库中。

参考链接:

1. commit 286bc123cd (gitster, Junio C Hamano):https://github.com/git/git/commit/286bc123cdabed76a1da25a32e97d392b37d51a2

2. commit b214eddfb2 (Dale R. Worley):https://github.com/git/git/commit/b214eddfb2d57e318a3f5b88da1cafcf19184b4d

0
0 Comments

"git diff" does nothing的问题出现的原因是工作目录是干净的,并且与上次更新没有任何差异。要解决这个问题,可以尝试编辑一个文件,然后再次运行git diff命令,这样就可以显示出差异。

解决方法:

1. 确保工作目录中有进行了修改的文件。

2. 运行命令"git diff",即可显示出修改的差异。

示例:

$ git diff

这样运行命令后,如果工作目录没有进行任何修改,控制台将没有任何输出。但是,如果编辑了某个文件,再次运行"git diff"命令时,将显示出文件的差异。

这是因为"git diff"命令用于显示工作目录与暂存区之间的差异。如果工作目录是干净的,即没有进行任何修改的文件,那么"git diff"将不会显示任何内容。只有在工作目录的文件与上次更新之间存在差异时,"git diff"才会显示出这些差异。

通过编辑文件并再次运行"git diff"命令,我们可以检查和比较文件的修改,以便更好地了解工作目录中的更改。这对于跟踪文件的修改和了解文件的差异非常有用。

所以,如果"git diff"命令没有任何输出,那么很可能是因为工作目录没有进行任何修改。要解决这个问题,只需要确保工作目录中的文件有所修改,并再次运行"git diff"命令即可。

0
0 Comments

git diff命令的默认输出是尚未提交/添加到索引中的更改列表。如果没有更改,则没有输出。

根据文档,git diff命令用于查看相对于索引(下一次提交的暂存区)的更改。换句话说,这些差异是您可以告诉git进一步添加到索引中但尚未添加的内容。

问题的原因是在工作区外,git不知道该比较什么,因此必须显式指定两个要比较的路径,这就是为什么会出现使用消息的情况。

解决方法是使用git diff HEAD命令,它会显示工作区与最新提交之间的差异。此命令会输出预期使用git diff命令的默认输出结果,即显示未提交的更改。

另外,可以使用git diff --cached命令仅显示索引中的内容。

至于git diff命令的具体作用是比较索引和工作目录之间的差异还是工作目录和索引之间的差异,根据git diff命令的默认行为,它比较的是(索引)-(工作目录)的差异。

总结起来,如果在使用git diff命令时没有输出,那么可能是因为没有未提交的更改。解决方法是使用git diff HEAD命令查看工作区与最新提交之间的差异。

0