Git: переименование файла - PullRequest
51 голосов
/ 13 октября 2010

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

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

Ответы [ 3 ]

97 голосов
/ 13 октября 2010

Вы можете попробовать:


Но проблема 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

2 голосов
/ 31 июля 2014

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

1 голос
/ 27 января 2014

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

...