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>';
> ?>
Ответы
Ответ 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 позволяют игнорировать различия в концах строк. Позволяет ли вам это сделать?