diff返回整个文件以获取相同的文件

And*_*sen 29 git diff

我有一个有git repo的网站.我克隆了repo,这样我就可以在一个目录中开发,然后推送到repo,然后拉入live/prod目录(如果有的话,会有更好的方法来提供建议,但这是在这个问题的范围).

我在实时目录中执行了以下操作来推送所有最新更改:

git add .
git commit -a // added a message
git push
Run Code Online (Sandbox Code Playgroud)

然后我在dev目录中执行了以下操作:

git clone git@bitbucket.org:user/repo.git
Run Code Online (Sandbox Code Playgroud)

然后我打开了两个文件,prod/root/test.php和dev/root/test.php,它们看起来完全相同.但是,当我执行以下diff命令时,它输出了整个文件:

diff prod/root/test.php dev/root/test.php
Run Code Online (Sandbox Code Playgroud)

我很困惑,为什么差异会输出整个文件,如果它们是相同的...我也尝试谷歌搜索这个,但找不到其他人有这个问题.也许这是一个行结尾问题或字符编码问题,它们看起来相同,但它们实际上是不同的,当你推送到它们的回购时git/bitbucket转换它?这是我唯一能想到的......无论是那还是我都错过了一些非常明显的东西.

这是输出:

1,3c1,3
< <?
< echo '<p>Hello world!</p>';
< ?>
---
> <?
> echo '<p>Hello world!</p>';
> ?>
Run Code Online (Sandbox Code Playgroud)

Sim*_*ias 36

这似乎是一个空白问题,为了将来避免它们,你可以设置Git来规范化它们.

Windows和UNIX系统不使用相同的行结尾,为了防止基于这些发生冲突,您应该以这种方式设置git config:

  • Windows:git config --global core.autocrlf true
  • Unix :git config --global core.autocrlf input

接下来,为了确保我们只提交理想的空格规则,您可以设置此配置选项:

git config --global core.whitespace trailing-space,space-before-tab,indent-with-non-tab
Run Code Online (Sandbox Code Playgroud)

  • “输入”和“真”有什么区别? (3认同)
  • @alpha_989 添加了文档链接 https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration (2认同)

Mic*_*ker 14

最有可能是线路终止.试试git diff --ignore-space-at-eol.而对于普通(不git)差异它diff -b.