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