首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git没有列出文件的特定更改吗?

Git没有列出文件的特定更改吗?
EN

Stack Overflow用户
提问于 2015-11-07 13:03:54
回答 1查看 1.2K关注 0票数 3

我一直在玩添加和提交,并使用diff来显示头、索引和工作dir之间的差异。使用diff,我的理解是它应该指定哪些文件已经更改,但也应该指定文件之间的差异(例如。如果我将"hello“写到一个文件中,那么在运行+hello时,它应该是+hello(或类似的东西),并将两者进行比较。

然而,当我使用diff时,它只显示文件已经更改;它无法显示这些更改是什么。为什么它不显示文件中的单个更改--我添加的实际文本,具体删除了什么,等等?如果diff不这样做,我可以使用一个命令吗?

谢谢。

为了运行完整的测试,我删除了.git并运行了一个git-init,然后发现diff没有显示diff的所有三个变体(git diffgit diff --cachedgit diff HEAD)的差异。我使用的文件是t.txt。这是我的控制台,我将其格式化为可读性;>>是Powershell提示输入的地方,我在控制台中输入了输入;注释是在我写的时候写的,用>> # <comment>表示。这是我的控制台输出:

代码语言:javascript
复制
>> # Starting with nothing.

>> git status
fatal: Not a git repository (or any of the parent directories): .git

>> git init
Initialized empty Git repository in C:/Users/q/Documents/GitHub/.git/

>> ls

>> git status
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)

>> echo "New file created." > t.txt

>> git status
On branch master
Initial commit
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        t.txt
nothing added to commit but untracked files present (use "git add" to track)


>> git add .

>> git status
On branch master
Initial commit
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   t.txt


>> #open t.txt and add a second line of text to it

>> git status
On branch master
Initial commit
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
       new file:   t.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:   t.txt


>> git diff
diff --git a/t.txt b/t.txt
index e7a4f8a..fe91a49 100644
Binary files a/t.txt and b/t.txt differ

>> #How can I see the exact change?
>> #Something like: '''
>> #
>> # + This is the added line.
>> #
>> # ''' in the diff?


>> # I can take this even further by making the first commit, modifying, then staging the file 
                              # with `git add`, then editing again, and then run all three `git-diff`s 
                              # (git diff, git diff --cached, git diff HEAD) and none of them will specify any actual 
                              # changes in the files; Git still just lists the files that have discrepancies, without 
                              # listing any of the detials about /what/ is actually different.


>> git add .

>> git commit -m "Committed with the second line."
[master (root-commit) 14acc45] Committed with the second line.
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 t.txt

>> git diff

>> git log
commit 14acc455b16ba26cdea1661166b0ffc3fa089784
Author: q <q@gmail.com>
Date:   Sat Nov 7 04:29:20 2015 -0800
    Committed with the second line.

>> git diff HEAD

>> git diff HEAD^
fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'


>> #We change the file again to add a third line


>> git status
On branch master
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:   t.txt
no changes added to commit (use "git add" and/or "git commit -a")


>> git diff
diff --git a/t.txt b/t.txt
index fe91a49..006c33a 100644
Binary files a/t.txt and b/t.txt differ


>> git diff HEAD
diff --git a/t.txt b/t.txt
index fe91a49..006c33a 100644
Binary files a/t.txt and b/t.txt differ


>> git add .

>> #Modify file again.

>> git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        modified:   t.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:   t.txt


>> git diff
diff --git a/t.txt b/t.txt
index 006c33a..57a6754 100644
Binary files a/t.txt and b/t.txt differ

>> git diff HEAD
diff --git a/t.txt b/t.txt
index fe91a49..57a6754 100644
Binary files a/t.txt and b/t.txt differ

>> git diff --cached
diff --git a/t.txt b/t.txt
index fe91a49..006c33a 100644
Binary files a/t.txt and b/t.txt differ

>>## But how do they differ?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-07 13:08:03

如果文件太小,git不知道如何解释它(测试或二进制):参见"Why does Git treat this text file as a binary file?

您可以使用以下命令强制设置文本差异:

代码语言:javascript
复制
git diff --text

(或者您可以将configure it作为文本)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33583079

复制
相关文章

相似问题

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