Почему git видит целые файлы как измененные при копировании файлов поверх других файлов? - PullRequest
6 голосов
/ 29 июня 2010

Когда я копирую файл поверх другого файла в каталоге, контролируемом git ... Я вижу, что git думает, что весь файл изменился, а не один маленький кусок ... почему?

Здесьэто пример того, что я имею в виду ... http://github.com/cmodien/fileupdatetest/commit/90309ed099e257cd98218b4504cd2cd3a3a47a27

ОК ... Я проверил окончания строки в файле ... Исходный файл имеет окончание строки crlf.Файл, который я вставил поверх оригинала, имеет конец строки.Думаю, в этом есть смысл ... Я получил оригинальный файл от пользователя Windows и получил новый файл от пользователя Mac.

Как мне это исправить?

Ответы [ 3 ]

4 голосов
/ 29 июня 2010

Как уже упоминалось в твиттере, (@adymitruk) у вас проблема с окончанием строки. Параметр AutoCRLF, вероятно, не установлен на «ложь», как должно быть - если вы не занимаетесь кроссплатформенной разработкой.

Решение состоит в том, чтобы установить значение false, исправить окончания строк, установить autocrlf в false, а затем зафиксировать. Когда это будет сделано, вы сможете скопировать эти файлы, а затем увидеть только реальные изменения.

3 голосов
/ 29 июня 2010

Существует два распространенных сценария, в которых это может произойти:

  1. Пробелы повреждены. Ваш редактор может преобразовывать пробелы в TAB или наоборот: просто установите его для использования Linux CodingStyle для решения проблемы.
  2. Концы строк повреждены. Установите для core.autocrlf значение false и посмотрите это обсуждение новой переменной core.eol .
2 голосов
/ 04 июля 2010

Я использовал это, чтобы решить проблему ...

Попытка исправить окончания строк с помощью git filter-branch, но безуспешно

Я изначально пыталсячтобы следовать этому ... http://help.github.com/dealing-with-lineendings/ но было несколько неясно, что в mac / nix нужно установить core.autocrlf для ввода, а не для true.

Другое небольшое осложнение состояло в том, что у меня былифайлы, игнорируемые в моем git, игнорируют и то, что мне нужно исправить ... так что эта команда:

git diff --cached --name-only -z | xargs -0 git add

терпела неудачу ... поэтому мне пришлось запустить это ...

git diff --cached --name-only -z | xargs -0 git add -f

чтобы заставить его исправить и игнорируемые файлы ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...