Вопрос по git – Git игнорируя gitconfig?

9

Похоже, Git игнорирует~/.gitconfig

$ git config --global core.filemode false

$ git config -l
core.filemode=false
core.filemode=true

Так что теперь есть 2 записи дляcore.filemode и git все еще не игнорирует изменения файлового режима

$ touch modetest

$ git add .

$ git commit -m test1
[master (root-commit) 320cfe4] test1
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 modetest

$ chmod +x modetest

$ git diff
diff --git a/modetest b/modetest
old mode 100644
new mode 100755

На основеответ torek & # x2019;Я добавил эту строку в мой.bash_profile

[ -d .git ] && git config core.filemode false

Ваш Ответ

3   ответа
15

git init всегда устанавливает новое значение заcore.filemode на основе результатов проверки файловой системы. Вы просто должны вручную:

git config core.filemode false

Или же:

git config --unset core.filemode

чтобы уважать тот, кто в вашем~/.gitconfig, Если вы бежитеgit init снова настройка на репо вернется кtrue в вашей системе.

Error: User Rate Limit ExceededNO_TRUSTABLE_FILEMODEError: User Rate Limit Exceeded.git/configError: User Rate Limit Exceeded.git/config.lockError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededgit config --global core.fileMode falseError: User Rate Limit Exceeded
0

(РЕДАКТИРОВАТЬ), чтобы возобновить, на окнах нам нужно сделать:

git config --global --unset core..filemode
git config core.filemode false

И вы можете создать пустой файл конфигурации в Git install dir для новых папок git (init):

C:\bin\Git\share\git-core\templates>echo > config
C:\bin\Git\share\git-core\templates>notepad config

И положить внутрь:

[core]
filemode = false
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededgit initError: User Rate Limit Exceededfilemode = true Steven Penny
2

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

Я пошел дальше и собрал git из исходного кода в своей системе Cygwin и установил его в локальный каталог, а затем добавил бинарный файл в мой путь. Основные шаги:

cd ~/
mkdir git
cd git
mkdir inst
git clone -c core.autocrlf=false https://github.com/git/git.git
cd git
NO_TRUSTABLE_FILEMODE=1 make prefix=/home/[username]/git/inst/
NO_TRUSTABLE_FILEMODE=1 make prefix=/home/[username]/git/inst/ install

Затем добавьте что-то вроде этого в .bashrc:

export PATH=/home/[username]/git/inst/bin:$PATH

Конечно, эта сборка не будет работать, если у вас не установлены все зависимости сборки, установленные в Cygwin. Немного покопавшись, я смог сделать это без особых проблем. Теперь git init и git clone в этой системе по умолчанию имеют файловый режим false. Хитрость заключается в определении NO_TRUSTABLE_FILEMODE для сборки.

Похожие вопросы