Как вы, возможно, знаете, внутренние имена файлов git (включая имена каталогов) - это просто текст в объекте TREE
, который является более или менее сжатым текстовым файлом, представляющим список каталогов.Так что это чувствительно к регистру.
Как вы знаете (и указали), файловая система Windows не чувствительна к регистру.
Существует набор обходных путей, встроенный в git
, управляемыйс помощью параметра конфигурации core.ignoreCase
, который помогает уменьшить несоответствие.Они не идеальны, но по большей части, если все используют эту настройку правильно, и никто не пытается помешать ей, этого достаточно, чтобы обычно предотвратить неприятности.
Возможно, что кто-то не сделалон не был установлен правильно, или работал в системе, чувствительной к регистру, где они выключили core.ignoreCase
, или набрал команду git add
, явно используя противоречивый регистр из того, что было в то время в базе данных.Трудно перечислить точные сценарии в деталях, но дело в том, что обходной путь не идеален.Так что это может произойти.
И оттуда могут произойти плохие вещи , потому что два дерева, представляющих имена в разных случаях, могут иметь конфликтующее содержимое в версии.Так что, хотя это может или не может стоить переписать историю, вероятно, стоит исправить в подсказках ветки.
Кстати, причина, по которой вы видите это в пользовательском интерфейсе, но не в загруженном ZIPесть, TFS почти наверняка проверяет фиксацию (в файловую систему без учета регистра) как первый шаг в создании ZIP для загрузки;тогда как пользовательский интерфейс, вероятно, рисует непосредственно из объектов в базе данных репо.
Не уверен, что можно сказать гораздо больше, если у вас нет дополнительных вопросов.