В Git есть способ (или инструмент) для слияния путем сравнения изменений, а не файлов?
В Git стандартные алгоритмы слияния позволяют сравнивать конечное состояние файлов в двух ветвях, что означает, что я должен запомнить или угадать, какие изменения привели к этой точке в обеих ветвях.
Помогает установка конфликтов слияния стиль = diff3 в.gitconfig, показывая общего предка. Тем не менее, мне все еще приходится делать различия в моей голове - то есть сканировать различные разделы, чтобы выяснить, что изменилось между предком и ветвью A, а также между предком и ветвью B, а затем, наконец, применить оба к предку или применить один ветка меняется на другую.
Есть ли инструмент, который бы сделал это для меня? Я хочу иметь возможность сравнивать изменения, произошедшие в одной ветви, с изменениями, произошедшими в другой. В идеале инструмент также должен показывать мне сообщения о коммитах изменений, которые я объединяю, чтобы мне не приходилось угадывать намерение.
1 ответ
git cherry
а также git patch-id
может помочь вам найти то, что вы ищете.
Набор изменений (или "diff") каждого коммита между точкой ветвления и заголовком сравнивается с каждым коммитом между точкой ветвления и восходящим потоком. Коммиты сравниваются с их патчем, полученным из
git patch-id
программа.Каждый коммит, который не существует в вышестоящей ветке, имеет свой идентификатор (sha1) с префиксом символа. Те, которые имеют эквивалентные изменения уже в восходящей ветви, имеют префикс минус (
-
), а те, которые существуют только в головной ветви, имеют префикс плюс (+
) условное обозначение:__ * __ * __ * __ * __>/ вилочных точка \__+__+__-__+__+__-__+__>