2017-01-16 3 views
0

Я делюсь своим репозиторием между моей машиной Linux и Windows и нажимал некоторые изменения разрешений на моей машине Linux.Проблемы с разделяющим хранилищем между linux и windows

Теперь мои окна машина говорит, что я уточненный при этом:

git fetch -all 
git reset --hard origin/master 
git pull 

но когда я пытаюсь сделать следующее:

git checkout dev 

Он вдруг говорит мне, что есть локальные изменения, которые, как раз так, являются теми же файлами, из которых я изменил разрешения на моем Linux-машине.

Каков правильный способ борьбы с этим? Я сделал эти изменения, поэтому мне не нужно вручную использовать chmod каждый раз, когда я нажимаю на свою Linux-машину.

+0

Я подозреваю, что у вас может быть проблема с окончанием строки. Windows и Linux используют разные концы строк, и что вы коснулись этих файлов в Linux, это может означать, что окончание было каким-то образом изменено. –

+0

Я уверен, что я настроил мою установку git для Windows, чтобы всегда использовать окончания строки linux для pull и commit – xorinzor

ответ

4

Попробуйте установить core.fileMode на false на Windows, после чего исполняемый бит игнорируется для репо.

+0

Спасибо! это сработало! (достаточно интересно, только когда я это сделал, используя 'git config core.fileMode false' без аргумента' --global') – xorinzor

+0

Это, вероятно, потому что 'clone' пытается определить, поддерживает ли ваша файловая система исполняемый бит и устанавливает ли свойство ваш репозиторий автоматически. Но это может быть неправильно или изменить, например. г. если вы клонируете Cygwin Git, но затем используете Git для Windows или клонируете на ext3, а затем получаете доступ к репо с помощью совместного доступа CIFS. Таким образом, свойство, вероятно, было установлено на уровне репозитория, поэтому глобальный уровень был перезаписан. – Vampire

Смежные вопросы