Почему git не пытается объединить изменения в переименованных файлах?

Допустим, у меня есть файл, который

  1. Изменен в основной
  2. Изменен в функциональной ветке
  3. Переименовано в функциональной ветке

Когда я пытаюсь выполнить слияние из основной ветки с функциональной веткой, происходит слияние с ошибкой

КОНФЛИКТ (изменить/удалить): X удалено в HEAD и изменено в источнике/мастере. В дереве осталось /master of X.

Я понимаю, что есть конфликт, но почему он даже не пытается объединить изменения и поместить маркеры конфликта в файл? Предыдущие ответы, кажется, подразумевают, что он должен. Все, что я получаю, это две разные версии файла, где мне приходится вручную определять разницу и портировать изменения построчно от основной версии к моей версии.

Шаги для воспроизведения:

git init
touch a
git add a
git commit -m 'initial import'

git checkout -b feature1
echo feature1 > a
git add a
git commit -m feature1
git mv a b
git commit -m feature1

git checkout master
echo bugfix > a
git add a
git commit -m bugfix

git checkout feature1 
git merge master 

18
задан Community 23 May 2017 в 11:46
поделиться