Таким образом, один из моих коллег попытался объединить ветку, используя опцию GitHub «объединить через ускоренную пересылку» в веб-интерфейсе, чтобы сохранить историю чистой от фиктивных коммитов слияния (ветвь master
, в которую они слились, имела не прогрессировал с тех пор, как была запущена будущая объединенная ветка объектов).
Как ни странно, это не сработало, как ожидалось: все коммиты получили новые хеши коммитов.
При ближайшем рассмотрении кажется, что опция слияния на самом деле называется «Rebase and Merge», и она действительно эквивалентна git rebase --force
, изменяя информацию Committer (как человека, который сделал слияние, так и когда произошло слияние).
Мне потребовалось довольно много времени, чтобы подтвердить мое подозрение, что это действительно так, поскольку я не смог создать инструменты cmdline, чтобы показать мне разницу между исходными коммитами в ветви функций и, казалось бы, идентичные коммиты (с разными хэшами) в основной ветви (В конце концов, я обнаружил, что gitk
показывает и коммиттера, и автора коммита; в конце очень я обнаружил, что могу также получить эту информацию через git log --pretty=raw
)
Итак:
- Есть ли способ сделать "правильное" ускоренное слияние (
git rebase
без --force
опция) через GitHub's веб-интерфейс? - Если нет: почему? (Я вижу преимущества в подотчетности; например, он отвечает на вопрос, кто несет ответственность за то, что данный фрагмент кода оказался в
master
)