“git diff”什么都不做
我认为这是一个configuration错误的地方,但我不知道在哪里。 常规的git命令似乎工作正常,但“git diff”什么都不做。 为了安全起见,我从.gitconfig文件中删除了外部差异工具。 这是通过MacPorts安装的,是lates版本(1.7.2.2)。
我看到的是,当我从工作区运行“git diff”时,它只是退出,什么都不做。
$ git --version git version 1.7.2.2 $ git diff $
如果我备份了一个目录,在我的根工作区之外,input“git diff”给了我这个:
$ git diff usage: git diff [--no-index] <path> <path>
这可能是预期的行为,因为我不在git仓库。
任何想法,我可以做什么来解决这个问题?
git diff
的默认输出是没有被提交/添加到索引的更改列表。 如果没有变化,那么就没有输出。
git diff [–options] [ – ] […]
这种forms是查看你所做的相对于索引的变化(下一次提交的登台区域)。 换句话说,差异是你可以告诉git进一步添加到索引,但你还没有。
请参阅文档了解更多详情。 特别是向下滚动到示例,并阅读本节:
$ git diff # (1) $ git diff --cached # (2) $ git diff HEAD # (3)
- 使用索引来区分工作副本
- 用HEAD来区分索引
- 用HEAD来分析工作副本
在你的工作区之外,正如你猜测的那样,git不知道该怎么区分,所以你必须明确地指定两条path进行比较,因此也就是用法消息。
注意: 从2013年第四季度开始,git 1.8.5或1.9 :
当用户在工作树外面键入“
git diff
”时,认为他是在一个内部,当前的错误信息是单行的:
usage: git diff --no-index <path> <path>
可能不足以使他意识到这个错误。
当我们陷入“
--no-index
”模式而没有明确的命令行选项来指示我们这样做时,将“Not a git repository
”添加到错误消息中。
看到:
- 提交286bc123cd ( gitster,Junio C Hamano ),它解释了
git diff --no-index
可以像一个常规(非git)diff
。 - 提交b214eddfb2 (Dale R. Worley),其中澄清了错误消息:
澄清“
diff --no-index
”的文档。
声明当不在仓库内时,–--no-index
是隐含的,两个参数是强制的。澄清来自
diff-no-index
错误消息以通知用户CWD不在仓库内,因此两个参数是必需的。
To compare two paths outside a working tree: usage: git diff --no-index <path> <path>
如果你的工作目录是干净的,并且与上次更新没有区别,它什么也不做。 尝试编辑一个文件,然后再次运行git diff,然后显示diff。
如果您在真实存储库或工作副本之外使用它,则其行为与GNU diff相同。 所以你需要通知2个目录或文件进行比较。 例:
git diff old_dir new_dir
。
如果他们之间有任何差异,输出将按预期显示给您。
不是在你的情况,但可能是因为你传递的文件不存在
$ git difftool HEAD HEAD^ -- path/that-not-exists
什么都没发生