Проблема с Git при переименовании каталога

Я знаю, что ответ на этот вопрос был дан в десятке вопросов SO, но у меня все еще есть проблема.

Я выполнил следующие шаги: Как правильно переименовать каталог в репозитории Git?

У меня есть проект Laravel, использующий Vue во внешнем интерфейсе. Структура примерно такая:

- /Components
- /Layouts
  - /Components
  - Layout1.vue
  - Layout2.vue
- /Pages
- /Shared
  - /Components

Мы хотим обновить его до:

- /components  <= moving /Shared/Components here as well
- /layouts
  - /partials
  - Layout1.vue
  - Layout2.vue
- /pages

Предлагается использовать двухэтапный процесс:

git mv casesensitive tmp
git mv tmp CaseSensitive

Я пробовал это, но не сработало. При попытке объединить/извлечь/переключить/выбрать/перебазировать в другую ветку я постоянно получаю следующую ошибку:

error: The following untracked working tree files would be overwritten by checkout:
    resources/js/Components/Notifications.vue
    resources/js/Components/PhoneCodeConfirmation.vue
    resources/js/Components/SMSCredit.vue
Please move or remove them before you switch branches.
Aborting

Поэтому вместо этого я попытался зафиксировать свои изменения и отправить их после первого шага:

git mv resources/js/Components resources/js/components_temp
git commit -am "updated to temporary folder name"
git push

На данный момент это работает, потому что имя папки совершенно другое. Затем делаю окончательное переименование:

git mv resources/js/components_temp resources/js/components
git commit -am "updated to lowercase folder name"
git push

Толкает правильно. Однако я все еще получаю ту же ошибку following untracked working tree files would be overwritten by checkout.

Кто-нибудь знает, почему?

РЕДАКТИРОВАТЬ Это происходит со всеми папками, которые я переименовываю в строчные буквы. Двухэтапный процесс не предотвращает этого. Это похоже на то, что мое рабочее дерево git все еще отслеживает старое имя даже после выполнения описанных выше шагов.


1
60
1

Ответ:

Решено

Поскольку все решения, которые я нашел в Интернете, похоже, мне не помогли, я использовал следующий обходной путь, чтобы заставить его работать. Я скопировал все на новый путь:

cp -R resources/js resources/app

Затем я смог переименовать все каталоги/файлы внутри этой новой папки так, как я хотел. Все, что мне нужно было сделать, это удалить старый и добавить новый:

git rm resources/js
git add resources/app

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


Интересные вопросы для изучения

Несоответствия различий GitHub при сравнении ветки с фиксацией слияния и другой, отменяющей слияниеКак полностью переопределить одну ветку git на другуюКонвейер Azure Devops с дополнительным этапом, запускаемым вручнуюКак запретить принудительную отправку только на главную, но при этом разрешить прямую (не принудительную) отправку в репозиториях git Azure DevOpsКак проверить, является ли данный аргумент синтаксически допустимым коммитом или синтаксически допустимым диапазоном изменений?Windows Powershell/robocopy: скопировать структуру каталогов и полное содержимое папки, но только если папка содержит PDF-файлЦиклическая зависимость Webpack при импорте из индексных файловКак изменить папку установки расширения по умолчанию для Visual Studio 2022?Как перечислить большой двоичный объект, находящийся в неизвестной папке?Как включить «примеры проектов» в модуль компонента Svelte?