2011-05-26 128 views
20

我正在使用git存储库。除git diff命令外,一切正常。 每当我修改任何文件,然后显示整个文件的git diff命令被修改,即使我修改了一小部分代码。显示整个文件的Git diff命令被修改,而不是显示修改过的小部分代码

什么可能是git diff显示整个文件被修改而不是代码的一小部分的原因? 也让我知道git diff配置的设置。

diff --git a/application/routes.php b/application/routes.php 
index 2842f8d..6629d16 100755 
--- a/application/routes.php 
+++ b/application/routes.php @@ -1,671 +1,676 @@ -<?php -/** - * Set the routes. Each route must have a minimum of a name, a URI and a set of - * defaults for the URI. -/-?> +<?php +/* + * Set the routes. Each route must have a minimum of a name, a URI and a set of + * defaults for the URI. + */ +?> 
+0

你可以发布'git diff'的输出吗? – hammar 2011-05-26 05:30:19

+0

diff --git a/application/routes.php b/application/routes.php index 2842f8d..6629d16 100755 --- a/application/routes.php +++ b/application/routes.php @ @ -1,671 +1,676 @@ - <?php -/** - *设置路线。每个路由必须至少有一个名称,一个URI和一组默认的URI。 - */ - ?> + <?php +/** + *设置路线。每条路由必须至少包含一个名称,一个URI和一组用于URI的默认值。 + */ +?> – Rahul 2011-05-26 05:44:30

+3

将差异粘贴到注释中不会很好。也许你应该将其粘贴到pastebin(永久保存)并告诉我们URL。 – 2011-05-26 13:02:00

回答

1

您的编辑器是否设置为自动重新格式化代码?它可能是用于使用缩进标签的文件,你改变它使用空格为例?

+0

使用制表符缩进的文件。 – Rahul 2011-05-26 05:50:14

+0

@Rahul,我认为你的编辑正在修改你的文件。你需要改变你的编辑器来停止这样做。一,确保它不是重新格式化代码。二,确保它没有修改现有的行结尾。 – 2011-05-30 03:28:37

22

比较git diffgit diff -b的输出。空白可能是责任。回流文本可能是另一个(你没有提到你存储的内容)。

+1

git diff -b命令显示适当的差异输出。请让我知道我需要做些什么改变。在此先感谢 – Rahul 2011-05-26 05:52:38

+1

@Rahul:诀窍是弄清楚*什么*空格造成的麻烦。有两种选择:它可以是行尾,可以添加/更改空格制表符。因此,例如在读取类似“<?php \ n”的行中,您应该在当前检出的文本字符前后查找空格和制表符,然后运行'git stash'并查找它们在以前的版本中。 'git pop'会恢复你的改变。此外,请告诉我们操作系统或系统您或任何其他人触摸此代码正在运行。 – 2011-05-26 13:06:21

11

该文件存储在unix模式或windows模式下(具有不同的行结尾),当您保存文件时,将其保存为相反的格式。

1

尝试运行此命令。它正常工作对我来说:

git diff -U0 Filename | grep -v "diff\|index\|@@\|+++\|\---" 

此命令基本上除去含有 “差异”, “指数” 线 “---”, “+++”, “@@” 使用的 “grep -v”命令和-U0删除显示在修改行上方和下方的多余行。

试试这个用一条线变化的文件,你会更好地理解它:)

1

尝试检查编码的文件。看起来内容相同但编码不同的文件被标记为完全不同。