Может GitHub ребазировать вместо слияния, как Геррит? - PullRequest
1 голос
/ 15 апреля 2020

Я сделал некоторую Gerrit проверку кода и обнаружил, что, как только мы нажимаем «Отправить» на странице Gerrit, он не выполняет слияние, а скорее выполняет «ребазирование» (точнее, некоторые cherry-picks), так что история является линейной, и все мои маленькие истории коммитов go попадают в эту линейную историю, и нет коммитов "слияния".

И затем я попробовал аналогичные операции с GitHub: просто разветвите репо, а затем отредактируйте в Интернете и создайте запрос на извлечение, и позвольте исходному репо принять этот запрос на слияние путем слияния.

И затем я увидел в SourceTree, что это «слияние», не «ребаз», поэтому история не линейная ... но я все равно вижу всю историю коммитов, если я git log, возможно, просто отсортирован в хронологическом порядке.

Но вопрос в том, может ли GitHub сделать Перебазировать так же, как Геррит? Это не должно быть сложно сделать: когда пользователь может нажать «Слияние» на GitHub, просто проверьте и посмотрите, все ли в порядке, и просто измените кнопку «Слияние» на «Слияние по ребазу» или «Принять изменения». (как перебазирование) "и это будет работать так же, как Геррит, и перебазирование - это способ, которым многие владельцы репо предпочитают его. Так может ли GitHub выполнить ребазинг так же, как Геррит?

1 Ответ

2 голосов
/ 16 апреля 2020

GitHub предлагает зеленую кнопку «слияния» со стрелкой вниз в одну сторону. Нажав на стрелку выпадающего меню, вы можете изменить операцию:

  • Слияние: делает эквивалент нормального git merge
  • Перебазировка и слияние: выполняет перебазировку, как будто на git rebase --force, а затем ускоренная перемотка результирующих скопированных коммитов
  • Squa sh и слияние: делает эквивалент запуска git merge --squash, более или менее

Средний из этих трех вариантов похож на то, что делал бы Геррит, но мне не ясно, обладает ли Геррит функцией (неправильно?) эффективного выполнения сначала git rebase --force.

Вынужденная перебазировка означает, что вы - человек, нажимающий кнопку слияния, становится коммиттером новых коммитов, и все коммиты имеют новые различные идентификаторы ha sh, даже если оригиналы могли использоваться как- и даже если бы вы были коммиттером оригинальных коммитов. (Если вы не являетесь первоначальным коммиттером, это было бы хорошим оправданием для форсирования такой перебазировки.)

...