Подтвердить что ты не робот

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

Скажем, у меня есть файл

  • Изменено в главном
  • Изменено в ветки признака
  • Переименовано в ветке свойств

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

CONFLICT (изменить/удалить): X удален в HEAD и изменен в исходном/главном. Версия origin/master из 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 
4b9b3361

Ответ 1

Поскольку на самом деле нет понятия операции переименования первого класса в git, он просто "обнаруживает" переименования, используя порог для различий файлов. Ваши файлы, вероятно, слишком разные.

Попробуйте слить: git merge master -s recursive -X rename-threshold=5%