"git diff"什么都不做

Tom*_*nza 87 git git-diff

我认为这是一个配置错误,但我无法弄清楚在哪里.常规git命令似乎工作正常,但"git diff"什么都不做.为了安全起见,我从.gitconfig文件中删除了外部diff工具.这是通过MacPorts安装的,是lates版本(1.7.2.2).

我看到的是,当我从我的工作区运行"git diff"时,它只是退出,什么都不做.

$ git --version
git version 1.7.2.2
$ git diff
$ 
Run Code Online (Sandbox Code Playgroud)

如果我备份一个目录,在我的根工作空间之外,输入"git diff"给我这个:

$ git diff
usage: git diff [--no-index] <path> <path>
Run Code Online (Sandbox Code Playgroud)

这可能是预期的行为,因为我不在git存储库下.

关于我可以做些什么来解决这个问题的任何想法?

Dou*_*las 102

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

git diff [--options] [ - ] [...]

此表单用于查看您对索引所做的更改(下一次提交的暂存区域).换句话说,差异是你可以告诉git进一步添加到索引但你还没有.

有关详细信息,请参阅文档.特别是,向下滚动到示例,并阅读本节:

$ git diff            # (1)
$ git diff --cached   # (2)
$ git diff HEAD       # (3)
Run Code Online (Sandbox Code Playgroud)
  1. 使用索引区分工作副本
  2. 使用HEAD区分索引
  3. 使用HEAD区分工作副本

在您的工作区之外,正如您所猜测的那样,git将不知道要区分什么,因此您必须明确指定两个要比较的路径,因此使用消息.

  • 我不确定你的答案是否正确,但它确实帮助我找到答案,所以谢谢你,我会这样标记!git diff的默认输出是*not*未提交更改的列表,它是_also_"尚未为下次提交暂存"的未提交更改列表.所以,执行我期待的"git diff"的命令实际上是"git diff HEAD". (12认同)
  • 要完成图片,请使用git diff --cached来显示索引中的内容. (2认同)