Объединение foxtrot - это слияние, где "origin/master" сливается в качестве второго (или более позднего) родителя, например:
Commit 'D' - это фокстрот-слияние, потому что "origin/master" является вторым родителем. Обратите внимание, что история первоисточника из "origin/master" содержит фиксацию "B" в данный момент.
Но в моем реестре git мне нужны все слияния с участием "origin/master" , чтобы сохранить "origin/master" в качестве первого родителя. К сожалению, git не заботится о родительском заказе, когда оценивает, имеет ли фиксация право на перемотку вперед. Это приводит к тому, что первая родительская история на моей главной ветке иногда теряет фиксации, которые были там (например, вывод "git log - first-parent" ).
Здесь происходит то, что происходит при фиксации "D" с предыдущей диаграммы:
Как я могу предотвратить это нажатие? Первоначальная история "origin/master" больше не содержит фиксацию "B" после того, как сбрасывается foxtrot merge!
Очевидно, что никакие коммиты или работа на самом деле не потеряны, просто в моей среде мне действительно нужен "git log -first-parent", чтобы быть стабильной накопительной записью коммитов - если хотите, своего рода "Write -Once Read-Many" (WORM). У меня есть сценарии и процессы, которые используют "git log --first-parent" для генерации изменений и примечаний к выпуску, а также для управления переходами билетов в моей системе продажи билетов (JIRA). Слияния Foxtrot нарушают мои скрипты!
Есть ли какой-либо предварительный прием, который я мог бы установить в своих репозиториях git, чтобы предотвратить слияние фокстрота?
<я > p.s. Графы фиксации в этом вопросе stackoverflow генерировались с помощью http://bit-booster.com/graph.html.