Веб-интерфейс Git, такой как GitHub и GitLab
В таких системах при слиянии патча автор может отличаться или не отличаться от коммиттера в зависимости от настроек репо.
Так как Git (Hub | Lab) хранит оба репозитория upstream и fork на одной машине, он может автоматически делать все, что вы можете делать и локально:
Создать коммит слияния.
Не генерирует автора! = Коммиттер.
Сохраняет SHA или новый коммит без изменений и создает новый коммит:
* Merge commit (committer == author == project maintainer)
|\
| * Feature commit (committer == author == contributor)
|/
* Old master (random committer and author)
Исторически это был первый доступный метод на GitHub.
Локально, это делается с git merge --no-ff
.
Создает два коммита на запрос на извлечение и сохраняет ветвь в истории git.
перебазировка поверх master
Хотя это не является обязательным в принципе и даже не выполняется по умолчанию локально с помощью git rebase
, GitHub также взламывает коммиты для установки коммиттера == того, кто нажал кнопку слияния.
Причиной этого является то, что это обеспечивает подотчетность сопровождающего проекта.
Git tree теперь выглядит так:
* Feature commit (committer == maintainer, author == contributor)
|
* Old master (random committer and author)
, что точно так же, как у git apply
почтовых патчей.
На GitHub в настоящее время:
- вы выбираете метод при слиянии через выпадающий список на кнопке слияния
- методы могут быть включены или отключены владельцем в настройках репо
https://help.github.com/articles/about-merge-methods-on-github/