Интегрируйте отступы и изменения содержимого в Git во время слияния: лучшие практики?

Я использую 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

10
задан Community 23 May 2017 в 11:51
поделиться