У меня есть две локальные ветви 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.c, но теперь, когда я пытаюсь
git co --theirs project/test.c
Я получаю
error: path 'project/test.c' does not have their version
... поэтому я не знаю, как гарантировать, что объединение будет использовать содержимое из ветви dev?
Наконец, есть ли лучший способ избежать такого беспорядка в будущем? По сути, изменение структуры папок независимо в ветвях, в которых содержимое не готово к первому слиянию ...