首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows的Git :为什么git不显示文件的工作目录和暂存索引之间的区别?

Windows的Git :为什么git不显示文件的工作目录和暂存索引之间的区别?
EN

Stack Overflow用户
提问于 2015-04-23 16:15:28
回答 3查看 1.3K关注 0票数 0

形势:

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

问题:

当我输入命令git、git缓存的first_file.txt或git时,响应显示它检测到了差异,但没有显示这些差异。-(见下文代码)

代码语言:javascript
运行
复制
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

我以为会有这样的事情:

代码语言:javascript
运行
复制
 > 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异”而不是显式显示差异?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-23 16:28:26

您的文件当然包含数据,这使得Git将该文件视为二进制文件。因此,它不能显示不同之处。

您可以通过以下方式强制Git将您的文件视为diff操作的文本:

代码语言:javascript
运行
复制
first_file.txt diff

.gitattributes文件中。请参阅这个类似的问题.gitattribute的文档。

票数 1
EN

Stack Overflow用户

发布于 2015-04-23 16:19:28

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

您可以在这段中看到实际的差异:

代码语言:javascript
运行
复制
100644
--- a/first_file.txt
+++ b/first_file.txt

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

票数 0
EN

Stack Overflow用户

发布于 2015-04-23 18:23:44

首先,我要感谢Frodon提供了一个链接,使我找到了解决我的问题。

溶液

问题在于文件的编码。最初,我在记事本中编辑了所有或我的文本文件。从Frodon提供的链接中,我找到了一个帖子,用户在那里使用Notepadd++来查找正在使用的编码并对其进行更改。

  1. 在阅读完这篇文章之后,我在Notepad++中打开了我的Notepad++
  2. 我从菜单中选择了编码选项卡,并看到编码被标记为'Encode in UCS-2 Big‘。
  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后显示的差异一样。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29829068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档