Git не создает конфликта, когда я думаю, что это должно быть

Я учусь развертывать веб-сайт на django, и для этого у меня есть 2 копии кода в 2 ветках Git, одна для разработки (master), а другая для развертывания (deployment) с различными конфигурациями.

Я внес некоторые изменения в главную ветку и хочу, чтобы они были доступны при развертывании. У меня должны возникнуть некоторые конфликты из-за разных файлов конфигурации, как показано в settings.py в master есть значение debug=True, и разрешенные хосты пусты, с другой стороны, в deployment оно равно False, и разрешенные хосты добавлены.

Git не создает никаких конфликтов с этими двумя строками, поэтому я не могу выбрать, какую из них я хочу использовать при объединении с deployment.

примечание: изменения в главной ветке git, которые я хочу внести в развертывание, не должны приводить к конфликтам. конфликты, которых я ожидаю, связаны только с уже существующими различиями в коде (цель создания этих двух веток).

Объяснение было кратко изложено в комментариях, но вот немного более подробное объяснение того, почему конфликта нет.

При объединении A и B git не просто просматривает 2 подсказки и проверяет, отличаются ли они друг от друга, чтобы создать конфликт. Это означало бы, что все слияния приведут к конфликтам, а это не то, чего вы хотите как разработчик. Что на самом деле делает git, так это сравнивает, как изменились два подсказки по сравнению с не друг с другом, а с общим предком (подумайте о самом близком общем предке в истории, но в сложные истории ветвей могут быть более... интересными).

Итак, предположим, что A и B имеют общего предка C. Теперь git видит, как все изменилось C по сравнению с A и C по сравнению с B. Теперь git берет эти 2 набора различий и пытается объединить их ... когда происходит столкновение, вы получаете конфликт.

Итак, в вашем примере, если в одной ветви у вас есть debug=False, а в другой ветви у вас есть debug=True, единственный способ вызвать конфликт - это если в общем предке у вас есть строка которое имеет значение, отличное от False или True.

Вернуться на верх