git diff gives no output
如果我运行
1 2 3 4 5 6 7 8 9 10 11 | $ 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的差异:
1 | $ git diff |
号
这没有输出!
我希望看到像
1 2 | $ git add . $ git diff |
还是什么都没有!
Git GUI显示更改。
但由于某种原因,
所以我的问题是:
我公司的一些人正在使用Git,但是SVN的人群将把这一点作为Git太混乱而无法使用的一个例子。
为什么在添加之前没有git diff?
Git不会将文件系统上的文件视为自动包含在版本控制系统中,您必须将内容显式添加到Git存储库中(正如您使用
没有输出到
我发现这是像SVN这样的VCS的一个关键区别(以及分段和忽略目录)。
如果您希望包含未跟踪的文件,则为
如果你不想在你的回购中加入他们,把他们加入你的
所以这有点不同。如果执行
当你在git repo中输入一个新文件时,它跳过工作副本直接进入临时区域。这在某种程度上是有意义的,无论文件是被跟踪的还是未跟踪的,
要查看最后一次登记和临时区域之间的差异,请执行
要查看临时区域和工作副本之间的区别,请执行
我曾经看到过这样的情况:确实应该从
1 | git --no-pager diff |
…所以显式地将寻呼机设置为
1 | git config --global core.pager 'less' |
。
尽管
这是在Ubuntu 12.04 LTS。我只是想补充一下,以防其他有同样问题的人来寻求解决方案,而上面的问题没有回答。
我在Git文档。
1.How, in plain English, does git diff work?
号
根据参数,
例如,
2.How can I show a diff of all the changes I've made (unstaged and staged)?
号
通过使用命令
但是对于一个刚刚用
git diff 显示工作树中相对于上一次提交所做的更改,仅用于跟踪文件。git diff HEAD 显示与上次提交相关的工作树中的更改(包括未跟踪的文件)git diff --staged (或其同义词git diff --cached )显示相对于上一次提交,为下一次提交所进行的更改。
调用
根据您的
您没有阶段文件,也没有来自那些现在处于版本控制下的文件的更改文件。
在
只是类型
1 | git add test.txt |
或
1 | git add . |
号
此文件将在版本控制下添加。这个文件的未来更改将由git diff显示。
我有一个
我的解决方案:
1 | unset LESS |
这确实与寻呼机设置有关。
我发现包括"e"在内
1 | export PAGER=less LESS=-cse |
帮助。
没有"-e",
Git diff不需要任何其他标志即可工作。首先,您创建一个文件,并使用git add to staging将其添加到git repo中,或者执行git commit将其放入存储库中。现在,转到该文件并对其进行更改并保存它。只需在其中放一句话,说明"我将在保存后立即运行"git diff"命令。保存它。此时,运行git diff命令时,您将看到不同之处。它将在执行"git commit"之前显示最近所做的更改,或者如果您最初只是将文件放入临时文件中,那么它将显示最近所做的更改。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | \TestGit>git diff File2.txt diff --git a/File2.txt b/File2.txt index e2ba019..eff7299 100644 --- a/File2.txt +++ b/File2.txt @@ -6,4 +6,6 @@ File two. Which is the second file that I will NOT add with the first file File1 The goal here is to add the File1 but not the File 2 -using git add File1.txt \ No newline at end of file +using git add File1.txt. + +So far I have just done a git add on this file. \ No newline at end of file |
号
带+符号的行是添加的内容。如果使用--cached标志并获得result,那么同一文件的git状态应该报告该文件尚未提交。一旦提交了该文件,即使使用--cached标志,也不会得到git diff的任何输出。