Git checkout не работает на неотслеживаемых рабочих файлах дерева после git mv

У меня проблема с местными отделениями. Когда я пытаюсь сделать git checkout <branch> Я получаю это сообщение об ошибке:

error: The following untracked working tree files would be overwritten by checkout:
... (list of files)
Please move or remove them before you switch branches.
Aborting

Я думаю, что причина в том, что в текущей ветке я переименовал / переместил некоторые файлы с git mv, Все файлы, перечисленные в этом сообщении об ошибке, перечислены со старым путем (то есть путем перед перемещением / переименованием действия). Есть ли способ обойти эту проблему? Я хотел бы перейти к моей основной ветке и объединить ее с текущей веткой, поэтому после этого не должно быть никаких проблем, но пока я не знаю, как успешно переключать ветви (а затем выполнить слияние, если опять могут быть некоторые проблемы).


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

Я не уверен, но, вероятно, одно и то же решение будет работать как для проверки, так и для задачи слияния.


После комментария @LutzBüch я пытаюсь показать, что именно произошло в этом репо. У меня есть филиал мастер и база данных. Ветвь базы данных работала только над частями, строго связанными только с базой данных. Эта часть кода осталась в каталоге с именем скажем db, В какой-то момент мне пришлось изменить это имя dir на DBтак что я сделал несколько git mv"S. Давайте проследим за этим с момента последнего слияния, когда все еще работало.

git checkout master
git merge database
git checkout database
git commit

{now the renaming happens}
git mv db/. tmp/.
git mv tmp/. DB/.
git commit {no other changes were made}
{added some renaming related changes, i.e. changed paths in 2 files}
git commit --amend

{now it's becoming the standard}
git commit {multiple times}
git checkout master {fails}

Последняя команда завершилась с сообщением об ошибке, упомянутым ранее. Все файлы в списке имели пути со старым dirname, т.е. db, После использования git checkout -f master, когда я попытался сделать слияние, я получил пути с DB как имя.

0 ответов

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