Как мне переименовать файл в git, который отличается только регистром?

14

В моем проекте git (Xcode) я зафиксировал имя файла с неправильным регистром. Теперь я пошел, чтобы попытаться переименовать его, но когда я фиксирую, я получаю:

Неустранимый: не будет добавлять псевдоним файла «MyProject / MyFile.h» («MyProject / MyFilE.h» уже существует в индексе)

Я уверен, что это потому, что git не используется для работы с сохраняющей регистр нечувствительной к регистру файловой системой, такой как HFS +. Но как мне обойти это?

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

кругозор
источник

Ответы:

21

Как спросили и ответили на stackoverflow , есть более простой способ сделать это, не включая создание новой файловой системы в файле образа диска:

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

Пример:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"
mspasov
источник
В целях избежания гниения ссылок мы обычно просим вас скопировать соответствующие части ответа за ссылкой в ​​текст ответа.
Ян С.
Спасибо @ Ян-с. Я надеялся, что это правило не распространяется на ссылки внутри семейства stackexchange.
mspasov
1
Да, я понимаю, что вы говорите, но последовательность хорошая.
Ян С.
Weird. Я был уверен, что попробовал это, но сегодня это работает. Благодарю.
Кен,
2

Я еще не нашел способ исправить это непосредственно в нечувствительной к регистру файловой системе, вам нужна чувствительная к регистру файловая система.

К счастью, Mac OS X имеет хорошую поддержку монтирования виртуального диска, поэтому вы можете быстро и легко получить (сделать) (временную) чувствительную к регистру файловую систему на вашем компьютере.

Откройте Дисковую утилиту, создайте новый образ и установите в поле «Формат» одну из чувствительных к регистру версий «Mac OS Extended». Также убедитесь, что вы делаете его достаточно большим для своего хранилища.

Смонтируйте новый диск, посмотрите на него репозиторий git, убедитесь, что файл с правильным именем имеет правильное содержимое, и удалите другой. Зафиксируйте и отправьте изменения, после чего вы сможете размонтировать образ диска и удалить его.

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

drfrogsplat
источник
1
Это ужасно трудоемко. Вы можете сделать это, не раскручивая новую файловую систему в файле образа диска.
Ян С.
1

Шаг 1 : Просто переименуйте файл с именем, которое более отличается (чем только регистр букв). Просто выберите случайное имя, отличное от текущего имени и от имени, которое вы хотите дать ему.

Шаг 2 : зафиксируйте этот файл с помощью GUI (Xcode) или CLI (Terminal)

Шаг 3 : переименуйте файл, как вы хотели переименовать его в первую очередь. Так что теперь также будет больше различий, чем в случае с предыдущим названием.

Шаг 4 : зафиксируйте переименованный файл снова.

Никаких волшебных трюков не требуется. И вы можете выбрать для фиксации с помощью графического интерфейса или CLI.

Бартель де Брабандере
источник
0

Я использую sourcetree. Без использования CLI это легко сделать. переименуйте файл в другое имя (например, Index.php в Index_old.php), затем подтвердите и нажмите .. снова измените имя на нужное имя (index.php), затем подтвердите и отправьте.

Hemantha
источник