Я использую Git для отслеживания кода Matlab. Игрушечный пример лучше всего иллюстрирует проблему. Проект до сих пор выглядит следующим образом.
C
/
A--
\
B
Содержимое A равно x=5
Мы делаем коммит C, где строка изменяется на x=6
Затем мы делаем коммит B, где наш контент становится ниже
if flag==1
x=5
end
Если мы попытаемся объединить с целью проекта, похожего на
C
/ \
A-- D
\ /
B
с результатом объединения в D, мы получим конфликт, потому что основная строка был изменен в обоих (отступ добавлен в B, 5 изменен на 6 в C).
Есть ли лучший способ интеграции изменений отступов из одной ветви и изменений содержимого из другой ветви, чтобы получить результат слияния?
Я читал об одной стратегии в https://stackoverflow.com/a/5262473/288545, и хотя это позволило бы избежать конфликта, оно отбросило бы отступ в пользу изменения содержимого (что является улучшением, но все же затрудняет чтение кода). ).
Полагаю, я мог бы просто смириться с этим и не менять отступы при написании своего кода. Это делает его менее читабельным, но не имеет большого значения в Matlab. Тем не менее, в python отступы действительно имеют значение, так как же люди с этим справляются? Это становится намного хуже, если есть большие блоки кода, которые мы позже изменим, чтобы они были внутри структур управления, поэтому diff затрагивает много строк и делает конфликты слиянием огромной головной болью.
Существует ли стратегия слияния, которая будет обрабатывать пространственные изменения и изменения содержимого отдельно, а затем интегрировать их? Я хотел бы, чтобы результат слияния был
if flag==1
x=6
end