В чем разница между автором и коммиттером в Git?

Я только что наткнулся на следующую фиксацию на GitHub: https://github.com/felixge/node-formidable/commit/0a0b150668daa3c6f01626d2565b898e5da12392

Как можно сделать несколько авторов при одном и том же коммитах?

Ответы

Ответ 1

Это не правда два автора - это автор и коммиттер. Эти два поля имеют разные значения. Автор - тот, кто создал контент, а коммиттер - тот, кто его совершил. Когда вы выполняете обычную фиксацию, вы оба. (И у обоих есть связанная электронная почта и временная метка.) Но они могут стать разными по-разному:

  • git format-patch/git am - эта пара позволяет вам превращаться в патчи, обычно отправленные по электронной почте, а затем применять их к кому-то другому. Вы остаетесь автором; лицо, применяющее их, является коммиттером. Это довольно определенно то, что произошло на github там.

  • git commit --amend, git rebase, git filter-branch. Все они в основном являются вариантами перезаписи истории, начиная от отдельной фиксации и заканчивая некоторой историей отрасли на всю историю. Они могут потенциально модифицировать информацию о коммиттере - в частности, они всегда переписывают временную метку коммиттера. Оригинальный автор остается на месте (в режимах по умолчанию), и если автор тоже делает переписывание, их имя и адрес электронной почты остаются, но временная метка естественно отличается.

Ответ 2

Не существует нескольких авторов, связанных с этим фиксацией (и в настоящее время невозможно назначить нескольким авторам одну фиксацию). В этом случае gliese1337 был автором, а felixge был коммиттером. Скорее всего, это произошло потому, что gliese1337 отправил запрос на перенос, который был принят, а затем совершен felixhe (владелец хранилища). Этот рабочий процесс довольно распространен в GitHub. Это также полезно в тех случаях, когда разработчик проекта получает патч по электронной почте, поэтому автор самого патча по-прежнему получает кредит за патч, даже если он или она не имеют права доступа к проекту.

Несколько связанных ссылок:

Short Git Раздел Wiki об атрибуции автора
Запрос функции для нескольких функций автора в Git core

Ответ 3

Это не множественные авторы. Один из них - автор, а другой - коммитер.

Если вы сделали бы клон, вы могли бы его четко понять:

$ git cat-file -p 0a0b150668daa3c6f016
tree 91edcb411b7cd0708c1f5bb05621846146c9425a
parent 6b9ffe3653fe59f035b01ba1f46b5f2650be00ca
author Logan Kearsley <[email protected]> 1308937685 -0700
committer Felix Geisendo╠Иrfer <[email protected]> 1309117893 +0200

Slight but definite & consistent performance boost.