Git: переименовать файл

Я хотел переименовать папку с «Frameworks» на «frameworks», но git не позволил мне добавить новое имя в нижнем регистре. Я предполагаю, что он обрабатывает имена файлов без учета регистра, не так ли?

git add frameworks/ -f не помогло


person Erik Aigner    schedule 13.10.2010    source источник


Ответы (3)


Можешь попробовать:


Но проблема case (например, в Windows) описана в проблеме msysgit. 228 (опять же: это должно теперь -- июнь 2014 года -- работать с git 2.0.1)

всегда есть возможность установить для ignorecase значение false в файле конфигурации, что заставит Unix использовать семантику Git поверх NTFS.
Git поддерживает такое поведение, но это не по умолчанию — с точки зрения NTFS a.txt и A.txt являются то же самое - поэтому Git пытается сохранить это, как и ожидало большинство пользователей

В качестве лучшего обходного пути вы можете

git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt

, который также изменяет регистр файла, хранящегося на диске.

Этот пост в блоге иллюстрирует ту же проблему на MacOs во время перебазирования:

По умолчанию в файловых системах Mac OS X регистр не учитывается. FFFFFF.gif совпадает с ffffff.gif.

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

Шаги довольно просты:

$ rm file/in/question.gif
$ git merge trunk

Во всяком случае, запомните, что означает git mv:

mv oldname newname
git add newname
git rm oldname

, поэтому, если newname и oldname конфликтуют, вам нужно сделать их разными (даже если это только на короткий период времени), поэтому git mv foo.txt foo.txt.tmp && git mv foo.txt.tmp Foo.txt

person VonC    schedule 13.10.2010
comment
Я уже пробовал git mv, но это дало мне fatal: renaming 'Frameworks' failed: Invalid argument - person Erik Aigner; 13.10.2010
comment
с точки зрения NTFS файлы .txt и A.txt - это одно и то же, поэтому Git пытается сохранить это, как и ожидало большинство пользователей, что не совсем так. Они одинаковы для одних операций и различны для других. Например, переименование одного в другое поддерживается в Windows (но не в Linux, это может быть ошибка в их драйвере, а может быть, тот, кто это реализовывал, не знал об этой функции). - person MarioVilas; 15.03.2013
comment
Нечувствительность к регистру HFS+ отстой!!!! Кроме того, многие программы не поддерживают HFS с учетом регистра. - person nterry; 28.08.2015

Если вам случится размещаться на Github, вы можете использовать функцию переименования на их веб-сайте. Пришлось изменить корпус для 5 файлов и обнаружил, что это работает очень хорошо.

person kvz    schedule 31.07.2014

У меня была аналогичная проблема, и я не мог изменить имя новой папки (другой регистр) в удаленных репозиториях. Я обнаружил, что самым простым решением было просто переместить файл из репо и зафиксировать. Запуск действия удаления. Затем снова добавьте, и когда я добавил, он появился с правильным регистром.

person David    schedule 27.01.2014