Похоже, у вас есть ситуация, когда у вас есть одна ветвь с областью неизмененного кода (master
) и одна ветвь, которая была изменена (c++version
). Когда у вас такая ситуация и вы сливаетесь в измененную ветку, Git включает все эти изменения, потому что результатом слияния является сумма всех изменений с обеих сторон.
В этом случае часть внесенных изменений заключается в удалении строки printf
и вставке строки cout
. Добавления и удаления являются частью этого изменения.
Конфликт возникает только тогда, когда один и тот же код изменяется с обеих сторон. Если изменена только одна сторона, то объединение включает это изменение. Вот как работает слияние. Git действительно предоставляет стратегии, чтобы принять только одну или другую сторону, но это не поможет вам в этом случае, так как вы не хотите удалять какие-либо строки, а Git не предлагает стратегию, которая делает это.
Более того, такая стратегия не будет очень полезной, потому что неясно, в каком порядке вы хотите добавить строки (это до или после существующих строк?), И, следовательно, каждое такое объединение должно приводить к в конфликте, чтобы вы могли это исправить.
Это одна из тех ситуаций, когда слияние выполняется синтаксически, но приводит к семантически нежелательным изменениям. Вы можете изменить слияние с помощью git commit --amend
, чтобы изменить результат слияния, но помимо этого, Git действительно не так много предлагает для этой ситуации.