Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
Файловые системы Windows и macOS не учитывает регистр (но сохраняет регистр) по умолчанию. Большинство файловых систем Linux чувствительны к регистру. Git изначально был создан в качестве системы управления версиями ядра Linux, поэтому неудивительно, что он чувствителен к регистру.
Хотя многие проблемы с нечувствительной к регистру операционной системой были устранены в Git для Windows, некоторые особенности остаются.
Имена файлов и папок
На Linux нет проблем с проверкой репозитория Git, содержащего и "File.txt", и "file.txt". Это разные имена файлов. На Windows и macOS проверка обоих файлов приведет к тому, что второй файл заменит первый. Если две папки отличаются только по регистру, их содержимое в конечном итоге будет смешанным в файловых системах без учета регистра.
Устранение конфликтов случаев
Одним из способов устранения этой проблемы является проверка репозитория в среде с учетом регистра.
Переименуйте файлы и папки, чтобы они больше не конфликтуют, а затем отправьте эти изменения в репозиторий.
подсистема Windows для Linux является одной из таких сред.
Другим подходом является использование команды git mv -f <conflicting name> <non-conflicting name> для каждого конфликта, следя за точным соблюдением прописных и строчных букв в обоих именах файлов.
Предотвращение конфликтов регистров
Лучше изначально избегать создания этой ситуации. Azure Repos предлагает параметр принудительного применения случаев , чтобы предотвратить отправки, которые привели бы к этой ситуации. Для разработчиков, внедрение привычки использования табуляции для фиксации файлов также поможет. Так как windows и macOS сохраняют регистр, это гарантирует, что внутренние элементы Git видят точно тот же регистр, который использует файловая система.
Имена ветвей и тегов
Вы можете создать две ветви или теги (известные как ссылки), которые отличаются только по регистру.
Внутренние механизмы Git, а также Azure DevOps Services/TFS будут восприниматься ими как две отдельные ссылки.
На компьютере пользователя Git использует файловую систему для хранения референсов (refs).
Извлечения и другие операции начинают давать сбои из-за неоднозначности.
Каждая ссылка представлена небольшим файлом, и если имя ссылки содержит символы /, то части до последнего / представлены папками.
Один из простых способов избежать проблем — всегда использовать имена веток и тегов в нижнем регистре. Если вы уже создали две ветви или теги с этой проблемой, ее можно исправить в веб-интерфейсе Azure Repos.
Исправление имен ветвей
На странице ветвей перейдите на связанный коммит. В контекстном меню выберите "Создать ветвь". Присвойте ветке новое имя, которое не вызывает конфликтов регистра. Вернитесь на страницу ветвей и удалите конфликтующую ветвь.
Исправление имен тегов
Действия по исправлению имени тега похожи на ветви. На странице тегов перейдите к помеченному коммиту. В контекстном меню выберите "Создать тег". Присвойте тегу новое имя, которое не вызывает конфликта в регистре. Вернитесь на страницу тегов и удалите конфликтующий тег.