Py学习  »  Git

bitbucket中的Git显示了文件之间的巨大差异

Tomasz Stępnik • 3 年前 • 1181 次点击  

我有一个网站有git回购协议。我克隆了repo,这样我就可以在一个目录中开发,然后推送到repo,然后拉入live/prod目录(如果有更好的方法,我会有兴趣提出建议,但这超出了这个问题的范围)。

我在live directory中执行了以下操作,以推送我的所有最新更改:

git add .
git commit -a // added a message
git push

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

git clone git@bitbucket.org:user/repo.git

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

diff prod/root/test.php dev/root/test.php

我很困惑,如果它们是相同的,为什么diff会输出整个文件。。。我也试过用谷歌搜索这个问题,但找不到其他有这个问题的人。可能是行尾问题或字符编码问题,它们看起来一样,但实际上不同,当你推到它们的repo时,git/bitbucket会转换它们吗?这是我唯一能想到的。。。要么就是我错过了一些非常明显的东西。

以下是输出:

1,3c1,3
< <?
< echo '<p>Hello world!</p>';
< ?>
---
> <?
> echo '<p>Hello world!</p>';
> ?>
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131097
 
1181 次点击  
文章 [ 5 ]  |  最新文章 3 年前
AlainD
Reply   •   1 楼
AlainD    3 年前

扩展@SimonBoudrias的优秀答案, git config --global core.autocrlf true 要求git在结账时将行尾从LF转换为CRLF。对于在Windows上工作的开发人员非常有用。此命令将添加以下内容到 %HOMEPATH%\.gitconfig :

[core]
    autocrlf = true

从运行命令 Git Bash 是最好的,但上面的行可以手动添加到 .gitconfig 如果你觉得容易的话。

Dharman jspcal
Reply   •   2 楼
Dharman jspcal    4 年前

不是解决方案,会对你有所帮助。

git diff --no-ext-diff --ignore-space-change -- <path> ->您只能在git bash中查看代码更改。

Patrick
Reply   •   3 楼
Patrick    12 年前

这通常意味着行尾不同。大多数diffin程序允许您忽略行尾的差异。你的允许你这么做吗?

Michael Krelin - hacker
Reply   •   4 楼
Michael Krelin - hacker    12 年前

很可能是线路终止。尝试 git diff --ignore-space-at-eol .而对于普通(非 git )不一样 diff -b .

Simon Boudrias
Reply   •   5 楼
Simon Boudrias    7 年前

这似乎是一个空白问题,为了避免将来出现这些问题,可以设置Git来规范它们。

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

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

接下来,为了确保我们只使用理想的空白规则进行提交,您可以设置 config option :

git config --global core.whitespace trailing-space,space-before-tab,indent-with-non-tab