У меня есть две локальные ветки master
и dev
. Обе ветки содержали три папки:
projectBeta
project
project_v1
Я хотел просто сохранить projectBeta
и удалить project
и project_v1
, а затем переименовать projectBeta
как project
. Так что то, что я делал отдельно на обоих ветвях, совершал, когда я шел. Все выглядело хорошо, пока я не попытался объединить ветвь dev
для управления, и я получил кучу таких ошибок:
CONFLICT (rename/delete): Rename projectBeta/test.c->project/test.c in dev and deleted in HEAD
CONFLICT (rename/delete): Rename project_v1/test.c->project/test.c in HEAD and deleted in dev
Итак, похоже, что Git отслеживает переименования по-разному в разных ветвях.
Если я делаю git status
, я получаю
# On branch master
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# added by us: project/test.c
#
no changes added to commit (use "git add" and/or "git commit -a")
Во-первых, я не понимаю, почему статус просто говорит, что он "добавлен нами", когда в отчете о слиянии говорится, что он переименован и удален как нами, так и им?
Во-вторых, я хочу использовать версию ветки dev (test), но теперь, когда я пытаюсь
git co --theirs project/test.c
Я получаю
error: path 'project/test.c' does not have their version
... поэтому я не знаю, как обеспечить, чтобы слияние использовало контент из ветки dev?
Наконец, есть ли лучший способ избежать такого беспорядка, подобного этому в будущем? В принципе, изменение структур папок независимо в ветвях, где содержимое не готово к слиянию сначала...