Проблема с 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» и «файл2», но они отсутствуют в древовидной структуре вашего примера. Возможно, вы сможете отредактировать вопрос, включив в него минимально воспроизводимый пример.

jsejcksn 15.08.2024 19:31

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

lkartono 15.08.2024 19:37

Я думаю, это потому, что у вас есть файл resources/js/Components/Notifications.vue, который не находится под контролем версий в вашей текущей ветке, но этот файл существует в другой ветке, которую вы пытаетесь получить, и git вежливо сообщает вам, что файл будет перезаписан, если вы оформляете заказ в другом филиале.

John Gordon 15.08.2024 20:36

Возможно, вы захотите совершить фиксацию перед слиянием или чем-то подобным. И, возможно, убедитесь, что у вас установлена ​​последняя версия, прежде чем приступать к работе над чем-то новым, если это применимо, чтобы избежать потенциальных конфликтов слияния.

dan1st 15.08.2024 22:20

Я придумал, как заставить это работать. Я скопировал все из resources/js в resources/app и оттуда переименовал все свои папки и файлы по своему желанию. Поскольку путь был новым, он не жаловался, и мне удалось его обойти. В моем случае иначе невозможно

lkartono 15.08.2024 23:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

cp -R resources/js resources/app

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

git rm resources/js
git add resources/app

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

Другие вопросы по теме