Как разрешить конфликт переименованной папки файла в git?

У меня есть следующая проблема:

У меня есть общий коммит A для двух ветвей Branch1 и Branch2.

  • Branch1 является публичной ветвью (лежит на сервере)
  • Branch2 является локальной ветвью

В Branch1 я изменил файл (BAD_folder/somefile.txt). Изменения были перенесены на сервер. В Branch2 я переименовал BAD_folder в folder и внес некоторые изменения в somefile.txt. Я хочу объединить Branch1 с Branch2, но я получаю конфликт слиянием в BAD_folder/somefile.txt файле.

Как я могу это решить?

Ответ 1

Вы можете переименовать folder в BAD_folder, merge или rebase Branch2 (что может быть лучше, если эта ветка является локальной) и переименовать папку назад.

  • git checkout -b _tmp Branch1
  • git mv folder BAD_folder && git commit
  • git merge Branch2
  • git mv BAD_folder && git commit

Когда вы сделали rebase, вы можете сделать дополнительный git rebase -i Branch1 и удалить две операции git mv.

merge в пункте 3 работает намного лучше, когда имена файлов не изменялись, но вам все равно придется разрешать конфликты.