Git diff сообщает о локальных изменениях "старый режим" / "новый режим"

есть 2 машины, A и B. И есть 2 ветви, p16 и c2.

A имеет файловую систему ext3, но на B архив живет на диске truecrypt с vfat, mount показывает rw, uid=1000,gid=1000, umask=077

A связал дерево каталогов B в свое дерево каталогов с помощью sshfs, а затем a толкнул в p16 B с помощью файловой системы.

теперь есть некоторые проблемы с разрешением:

B$ git status
# On branch p16
nothing to commit (working directory clean)
B$ git checkout c2
Switched to branch 'c2'
B$ git checkout p16
error: You have local changes to 'help.txt'; cannot switch branches.

git diff показывает мне измененный режим для всех файлы:

B$git diff
diff --git a/help.txtt b/help.txt
old mode 100644
new mode 100755
diff --git a/169.txt b/169.txt
old mode 100644
new mode 100755
... 
(a list with all files having their mode changed follows)
...

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

есть идеи, как я могу лучше связать 2 машины с различными файловыми системами?

1 ответов


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

решение было указано meagar в его комментарии по вопросу выше:

просто убедитесь, что у вас есть (в пределах ) строку

filemode=false

in .git / config, который скажет git игнорировать исполняемый бит для файлов, это отследить.

другой способ сделать то же самое-перейти в корневой каталог репозитория git в терминале и ввести:

git config core.filemode false

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