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
как имя.