Справочные каталоги Git <repo>/. Git / refs - PullRequest
0 голосов
/ 09 сентября 2018

В Windows Git есть проблемы с ссылками, отличающимися только регистром:

$ git branch foo
$ git branch FOO
fatal: A branch named 'FOO' already exists.

$ git branch dir/foo
$ git branch DIR/bar
$ git branch --list
* develop
  foo
  dir/bar
  dir/foo

Это можно объяснить тем, что Git использует файловую систему для хранения ссылок в виде файлов foo и bar внутри каталога <repository>/.git/refs/heads/dir.

$ git branch --delete dir/bar
$ git branch --delete dir/foo
$ git branch --list
* develop
  foo

Старые версии Git, похоже, оставили в <repository>/.git/refs пустые каталоги, где более новые версии Git удаляют их.

Безопасно ли удалять пустые каталоги в <repository>/.git/refs вручную?

1 Ответ

0 голосов
/ 09 сентября 2018

Безопасно ли удалять пустые каталоги в <repository>/.git/refs вручную?

Да, , если , то больше ничего не работает. Git воссоздает их при необходимости.

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

Обратите внимание, что если вы запустите git pack-refs --all, существующие ссылки будут объединены в один файл, содержащий упакованные ссылки. Это позволит вам создавать новые ссылки, отличающиеся только регистром, но не делайте этого, потому что, когда Git переходит к обновлению ссылок, он сталкивается с проблемой свертывания регистра в вашей файловой системе.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...