Я серьезно собираюсь перестать кодировать и стать плотником.Эта проблема заставляла меня напрягаться в течение достаточно долгого времени, и, похоже, не существует какого-либо ясного решения, кроме того, что принуждение компьютеров, не являющихся Windows, использовать права доступа к файлам, по-видимому, вызывает.
Давайте начнем ссценарий.У меня есть 2 машины для разработки, одна под управлением Windows7, другая под Mac OSX.Они оба используют Eclipse и EGit, и оба клонировали один и тот же проект из удаленного репозитория.На этом сходство заканчивается, потому что у моей машины с Windows есть неприятная привычка сохранять файловый режим 644 (r-xr - r--) в локальном репо, в то время как режим на Mac по умолчанию равенкруто 775 (rwxrwxr - x).
Так что проблема, очевидно, в правах доступа к файлам - GIT сообщает, что есть файлы, которые изменились из-за различий в режимах файлов, а не из-за фактического содержимого.Решение казалось очевидным, запустив следующие команды:
git config core.filemode false
git config --global core.filemode false
... который работал как шарм, за исключением , когда фиксация и объединение разрешали конфликты .
Например, скажем, файлы A, B и C существуют в репозиториях Windows и Mac.Теперь давайте изменим режим файлов для этих 3 файлов на компьютере Mac, чтобы разработчик мог их редактировать.Теперь измените часть содержимого в файле A. Поскольку мы игнорируем режимы файлов (благодаря приведенным выше командам), только файл A будет зафиксирован и передан, готов для машины Windows, чтобы получать, объединять и наслаждаться ...
Теперь, давайте снова отредактируем файл A на Mac и на компьютерах с Windows, эффективно вызывая потенциальный конфликт, и пусть машина с Windows фиксирует и загружает файл A первым.Затем, когда пользователь Mac фиксирует свои изменения в файле A и извлекает последние изменения из удаленного репозитория, очевидно, создается конфликт.
После разрешения конфликта на компьютере Mac и добавления файла A обратно в его локальныйрепо, фиксация этого слияния включает в себя ранее проигнорированные файлы B и C, что подчеркивает мою проблему!Почему ранее игнорируемые файлы включены в этот коммит слияния?Кажется, это не проблема исключительно Mac / Windows, поскольку эту проблему можно воссоздать в обоих направлениях ...
Это, вероятно, не имеет значения, если бы было только 3 файла, но этот проект яупоминание включает в себя тысячи, и все эти взлеты и падения безумны.Я что-то упускаю действительно очевидное?Любая помощь будет принята с благодарностью!