Ошибка слияния Git в файле без изменений

Я пытаюсь объединить изменения, сделанные моим коллегой, в мой локальный репозиторий, но git продолжает жаловаться, что я изменил файл и что мои изменения будут перезаписаны (ошибка : ваши локальные изменения в следующих файлах будут перезаписаны слиянием ").

Если я сравниваю свой файл с HEAD с помощью egit, он говорит, что ничего не изменилось (пробелы не игнорируются).

Если я сейчас напечатаю

git diff HEAD -- myfile

он говорит, что файл полностью изменился. (Я удалил все предыдущее содержимое файла, а затем повторно добавил все новое содержимое).

Мой файл содержит XML, но его расширение - «.inspector».

Мой файл .gitattributes содержит следующее:

* text=auto
*.fib text
*.inspector text
*.vm text
*.palette text
*.owl text
*.shema text
*.dict text

и в моей конфигурации git у меня есть следующая информация (плюс электронная почта, имя и материалы ветки / пультов):

core.autocrlf=true
core.trustctime=false
core.repositoryformatversion=0
core.filemode=false
core.logallrefupdates=true
core.autocrlf=true

Я работаю в Windows с git 1.7.5.1

Я проверил этот вопрос но у меня это не сработало.

Я тоже пытался сделать

git checkout 1.5 -- myfile

но проблема осталась.

Репозиторий github (если он может быть полезен кому-либо) находится здесь: https://github.com/agilebirds/openflexo

И вот проблемный файл: https://github.com/agilebirds/openflexo/blob/1.5/flexodesktop/modules/flexoworkfloweditor/src/main/resources/Inspectors/WKF/Role.inspector, который недавно был отредактирован моим коллегой (который работает на Mac).

Если потребуется дополнительная информация, не стесняйтесь спрашивать, я с радостью ее предоставлю.


person Guillaume Polet    schedule 31.01.2013    source источник
comment
Либо зафиксируйте, либо сохраните свои изменения в локальном репо. Вот как работает git. Для слияния ваше локальное репо должно быть чистым. stackoverflow.com/questions/9588111/   -  person Jeff    schedule 31.01.2013
comment
@Jeff, хотя это действительно сработает, это загрязнит мою историю git ненужными коммитами (или создаст ненужные тайники). Более того, эта проблема возникает довольно регулярно, поэтому я предпочитаю решить ее заранее, а не работать над ней.   -  person Guillaume Polet    schedule 31.01.2013
comment
@GuillaumePolet, вы можете бросить тайник, если он вам больше не нужен   -  person umläute    schedule 31.01.2013
comment
@umlaeute да, но я не хочу этого делать. Это обходные пути, о которых я знаю, но я хотел бы исправить проблему раз и навсегда. Я почти уверен, что сделал что-то неправильно, и этот git не должен сообщать, что мой файл был изменен.   -  person Guillaume Polet    schedule 31.01.2013
comment
Это очень похоже на проблему с окончанием строки. Можете ли вы показать нам результат file yourfile и git show origin/branch:yourfile > tempfile, file tempfile.   -  person Chronial    schedule 31.01.2013
comment
@Chronial Они оба сообщают XML document text. У моего другого коллеги core.autocrlf = input в конфигурации git   -  person Guillaume Polet    schedule 31.01.2013
comment
@Chronial после рассмотрения этого вопроса с моим коллегой, похоже, он установил в два раза больше значения core.autocrlf. Один раз в глобальной конфигурации git с core.autocrlf = input и второй раз в конфигурации репозитория с core.autocrlf = false. Может ли это быть корнем моей проблемы?   -  person Guillaume Polet    schedule 31.01.2013
comment
@GuillaumePolet Я думаю, вы пытаетесь исправить что-то, что действительно не сломано. Так устроен Git. Возможно, вам стоит работать в другой ветке, которая не сольется с master. Скорее экспериментальная ветка. Таким образом, вы можете объединить изменения ваших коллег с вашим локальным мастером без этих конфликтов. Имеет ли это смысл?   -  person Jeff    schedule 01.02.2013
comment
@ Джефф Извините, я не уверен, что понимаю вас. AFAIU Git, если коллега (используя любые платформы) изменяет файл, который я не меняю, он должен без проблем слиться. Я считаю, что где-то есть проблемная конфигурация, которую я хотел бы решить.   -  person Guillaume Polet    schedule 01.02.2013
comment
@GuillaumePolet Да, вероятно, это корень вашей проблемы. Попробуйте запустить git config core.autocrlf = true в своем репо (если вы работаете в Windows). Но теперь вы должны знать, что core.autocrlf устарел и устарел. Я объяснил правильный путь здесь: stackoverflow.com/a/13154031/758345 - вы должны использовать это в своей команде. .   -  person Chronial    schedule 01.02.2013
comment
@Chronial Почему github по-прежнему советует использовать core.autocrl (чистое любопытство)? В любом случае, решит ли это (ответ в вашей ссылке) все проблемы на всех платформах? Хотя почти любая достойная программа может без проблем обрабатывать как CRLF, так и LF, многие из них по-прежнему создают CRLF в Windows и LF на платформах Unix / Linux.   -  person Guillaume Polet    schedule 01.02.2013
comment
@GuillaumePolet Вы правы. Я неправильно понял вопрос, означающий, что вы внесли изменения в файлы и хотели объединить изменения ваших коллег с выполнением фиксации.   -  person Jeff    schedule 01.02.2013
comment
@GuillaumePolet, потому что его проще настроить глобально. Но * правильный способ * ™ - сохранить соглашение об окончании строки в репо. И да, это решит все проблемы на всех платформах.   -  person Chronial    schedule 01.02.2013
comment
@Chronial Хорошо, полезно знать. Спасибо за все объяснения.   -  person Guillaume Polet    schedule 01.02.2013