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

#git #git-merge #branching-and-merging #git-merge-conflict

Вопрос:

Я пытаюсь настроить автоматическую систему слияния/сборки между двумя ветвями проекта, но у меня возникают проблемы с удалениями, которые не появляются в моих слияниях. Вот как все устроено.

Я разрабатываю основную ветвь — добавляю, изменяю и удаляю файлы. Все изменения внесены в main.

У меня есть вторая ветвь выпуска, в которую объединяются последние работы из main, создается и публикуется сборка.

Когда я выполняю слияние git merge --no-commit -s recursive -Xtheirs main (запуск с выпуска), большинство вещей хорошо сливаются, отдавая предпочтение элементам, поступающим из main. Однако файлы, удаленные в main, не удаляются при выпуске.

Я думаю, что именно так работает слияние git — если нет фактического конфликта, git просто сохраняет файл в режиме выпуска, без удаления. Но мне нужно, чтобы это ушло. Есть ли какие-либо команды, которые я могу выполнить, чтобы это произошло? Или я могу как-то сделать это вручную?


Обновление — забавная деталь: Окружающая среда, похоже, здесь имеет значение. Это работает, как и ожидалось, на моем ноутбуке (вещи удаляются в результате слияния), но при запуске в качестве действия Github происходит сбой. Извините, если это делает эту проблему совершенно другой.

Комментарии:

1. Оказывается, это была совершенно другая проблема, связанная с подмодулями и слиянием мелких клонов. Я был дураком — ДУРАКОМ! — опустить эту информацию в вопросе, потому что это совершенно другая проблема, чем спрашивалось. Короткая история-Извлеките больше 1, если вы пытаетесь слиться. Тогда подмодули не будут причинять боли и вызывать конфликты, и слияние завершится, что приведет к удалению соответствующих файлов! Вздох… кодирование иногда бывает трудным, вы все.

Ответ №1:

Вы должны создать фиксацию в main, которая включает удаленные файлы.

 rm file1 file2
git add .
git commit -m "Delete file1 file2"
git checkout release
git merge --no-commit -s recursive -Xtheirs main
 

Удаленные файлы больше не должны существовать в ветке выпуска.

Комментарии:

1. О, я это делаю. Никаких проблем с совершением коммитов, ха-ха. Извините, это показалось мне шагом здравого смысла, но я полагаю, что это форум помощи. Должно быть ясно. Будет обновляться.