Windows的Git:为什么git diff没有显示工作目录和文件的登台索引之间的差异?

时间:2015-04-23 16:15:29

标签: git github windows-7-x64

情况:

我在Windows 7上安装了Git 1.9.5.github.0。 我目前在每个或三个区域(存储库,登台索引和工作目录)中都有一个文件版本。该文件的所有三个版本都不同,因为每个版本的文本行都比旧版本更多。

问题:

当我输入命令git diff,git diff --cached first_file.txt或git diff HEAD;响应显示它检测到差异,但不显示这些差异。      ----(见下面的代码)

Z:\myFirstGit [master +0 ~1 -0]> git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   first_file.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   first_file.txt

Z:\myFirstGit [master +0 ~1 -0 | +0 ~1 -0]> git diff
diff --git a/first_file.txt b/first_file.txt
index 2b6f7c0..0090cbf 100644
Binary files a/first_file.txt and b/first_file.txt differ
Z:\myFirstGit [master +0 ~1 -0 | +0 ~1 -0]> git diff head
diff --git a/first_file.txt b/first_file.txt
index e1a914a..0090cbf 100644
Binary files a/first_file.txt and b/first_file.txt differ
Z:\myFirstGit [master +0 ~1 -0 | +0 ~1 -0]> git diff --cached first_file.txt
diff --git a/first_file.txt b/first_file.txt
index e1a914a..2b6f7c0 100644
Binary files a/first_file.txt and b/first_file.txt differ

我期待的是:

 > git diff
diff --git a/first_file.txt b/first_file.txt
index e1a914a..0090cbf 100644
--- a/first_file.txt
+++ b/first_file.txt
@@ -1 +1,2 @@
 This is the first_file test.
+One more line.

问题:

为什么我得到响应“二进制文件a / first_file.txt b / first_file.txt不同”而不是明确显示差异?

3 个答案:

答案 0 :(得分:1)

您的文件当然包含使Git将文件视为二进制文件的数据。因此,它无法显示差异。

您可以强制Git通过编写以下内容将您的文件视为diff操作的文本:

first_file.txt diff
<{1>}文件中的

。 请参阅this similar question.gitattribute的文档。

答案 1 :(得分:0)

这通常在文件模式发生变化时发生。

你可以在这一位看到差异:

100644
--- a/first_file.txt
+++ b/first_file.txt

这意味着文件的模式已更改为644。 (见file modes

答案 2 :(得分:0)

首先,我要感谢Frodon提供的链接,引导我解决我的问题。

<强>解决方案

问题在于文件的编码。我最初在记事本中完成了所有或我的文本文件编辑。从Frodon提供的链接中,我发现了一个帖子,其中的人使用Notepadd ++来找出正在使用的编码并进行更改。

  1. 读完之后,我在Notepad ++中打开了first_file.txt
  2. 我从菜单栏中选择了“编码”选项卡,发现编码被标记为“在UCS-2 Big Endian中编码”。
  3. 我在没有BOM的情况下将编码更改为UTF-8中的编码。
  4. 我将'更改编码'作为文本添加到first_file.txt中的新行。保存,然后git add first_file.txt,最后git commit first_file.txt -m 'Changed encoding'
  5. 现在,当我对first_file.txt进行编辑时,在输入命令git diff
  6. 后显示的编辑内容与显示的差异一样