Подтвердить что ты не робот

Diff возвращает весь файл для идентичных файлов

У меня есть сайт с репо git. Я клонировал репо, чтобы я мог развиваться в одном каталоге, а затем нажимать на репо, а затем вставлять каталог live/prod (были бы заинтересованы в предложениях по лучшему способу сделать это, если они есть, но что за пределами объем этого вопроса).

Я сделал следующее в текущем каталоге, чтобы выполнить все мои последние изменения:

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

Затем я сделал следующее в каталоге dev:

git clone [email protected]:user/repo.git

Затем я открыл два файла: prod/root/test.php и dev/root/test.php, и они выглядели одинаково. Однако, когда я выполнил следующую команду diff, он вывел весь файл:

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

Я так запутался в том, что diff выводит весь файл, если они идентичны... Я также попытался выполнить поиск в googling и не могу найти кого-либо еще с этой проблемой. Возможно, это проблема с окончанием строки или проблема с кодировкой символов, где они выглядят одинаково, но на самом деле они разные, а git/bitbucket преобразует ее, когда вы нажимаете на их репо? Это единственное, что я могу придумать... Либо это, либо я пропускаю что-то действительно очевидное.

Здесь вывод:

1,3c1,3
< <?
< echo '<p>Hello world!</p>';
< ?>
---
> <?
> echo '<p>Hello world!</p>';
> ?>
4b9b3361

Ответ 1

Это похоже на проблему с пробелами, чтобы избежать их в будущем, вы можете настроить 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

Ответ 2

Скорее всего, это завершение строки. Попробуйте git diff --ignore-space-at-eol. И для обычного (не git) diff это diff -b.

Ответ 3

Это обычно означает, что окончание строк отличается. Большинство программ diffin позволяют игнорировать различия в концах строк. Позволяет ли вам это сделать?