git diff不提供输出
如果我运行git diff
我希望看到我的工作目录相对于以前提交的任何内容(如果是没有提交的新回购,那么工作目录内容的列表)会发生一系列更改。 试试这个例子:
$ mkdir temp
$ cd temp
$ git init
$ echo "first line" > test.txt
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# test.txt
nothing added to commit but untracked files present (use "git add" to track)
我们来看看test.txt的差异:
$ git diff
这没有输出!
我期望看到像+ first line
那样的差异,但是我什么也得不到。 它并没有告诉我发生了什么事。 在stackoverflow的人告诉我git add
一些文件,所以我这样做:
$ git add .
$ git diff
依然没有!
Git GUI显示更改。
git status -v
显示更改。
但由于某种原因, git diff
没有显示任何内容。
所以我的问题是:
git diff
工作的? 我公司的一些人使用git,但是SVN人群会指出这是git太混乱而无法使用的情况。
为什么在添加之前没有得到git diff?
git不会将文件系统上的文件视为自动包含在版本控制系统中,而必须将其明确添加到git存储库中(就像通过使用git add .
当前目录一样)。
git diff
没有输出,因为git 在你的版本库中没有看到任何变化,只有在版本库之外的文件,它认为是'未被跟踪'的,并且在生成diff时被忽略。
我发现这个与svn一样的vcs关键区别之一(与分段和忽略目录一起)。
如果你想包含未跟踪的文件, git add
它们。
如果你不希望他们在你回购添加他们给你的.gitignore
(见git ignore --help
)。 这对C目标文件或python .pyc
文件很有用。
为什么添加后无法获得git diff?
所以这有些不同。 如果你做git status
你会看到文件现在在暂存区域。 这是您即将提交的文件的区域。
当你在git add
一个新文件时,它会跳过工作副本并直接进入暂存区域。 这是有道理的,无论是追踪还是未追踪, git add
都会将文件移入暂存区域。
要查看上次签入和暂存区域之间的差异,请执行git diff --cached
。
要查看暂存区域和工作副本之间的差异,请执行git diff
。 如果暂存区域中没有任何内容,则与最后一次签入和工作副本之间的差异相同。
我已经看到了真的应该从git diff
输出但没有的情况。 加入
--no-pager
git
和diff
之间的无页面工作:
git --no-pager diff
...因此,明确地设置寻呼机不less
git config --global core.pager 'less'
即使less
应该是默认寻呼机。
这是在Ubuntu 12.04 LTS中。 我只是为了防止出现同样问题的其他人来寻找解决方案并且上述内容不回答问题而添加此内容。
我在git文档中找到了关于寻呼机设置的信息。
基于你的git status
输出,没有附加参数,没有任何东西可以显示git diff
。 对于git diff --cached
和git diff HEAD
,没有什么可以显示的,因为所有这些命令都依赖于git已知的更改。
您现在没有阶段性文件,也没有来自受版本控制的文件的更改文件。
在git
控制下添加test.txt
,您将获得所需的输出。
只需键入
git add test.txt
要么
git add .
比这个文件将在版本控制下添加。 而这个文件的未来变化将由git diff显示。
链接地址: http://www.djcxy.com/p/36255.html