Я пытаюсь сделать коммит как
git commit --author="John Doe <john@doe.com>" -m "<the usual commit message>"
где Джон Доу - пользователь, от имени которого я хочу сделать коммит.
Кажется, все в порядке git log
. Однако, когда я делаю a gitk
, имя автора является правильным, но имя коммиттера выбирается из моих глобальных настроек git config (и, таким образом, устанавливается на мое имя / адрес электронной почты).
Вопросы
В чем разница между ними (коммиттер против автора)?
Должен ли я настроить коммиттера также для другого пользователя?
Если да, то как?
git
git-config
gitk
му 無
источник
источник
Ответы:
Оригинальный плакат спрашивает:
Автор - это человек, который изначально написал код. С другой стороны, коммиттером считается тот, кто передал код от имени первоначального автора. Это важно в Git, потому что Git позволяет вам переписывать историю или применять патчи от имени другого человека. Бесплатно онлайн Pro Git книга объясняет это следующим образом :
Оригинальный плакат спрашивает:
Нет, если вы хотите быть честным, вы не должны назначать коммиттера автору, если автор и коммиттер действительно не одно и то же лицо.
источник
git config user
а затемgit add
иgit commit
, тогда git будет знать, кто добавил, а кто совершил, но он все равно не будет знать, кто это написал.Список рассылки +
git format-patch
+git apply
может сгенерировать автора! = КоммиттерВ таких проектах, как ядро Linux, где исправления:
git format-patch
git send-email
git apply
илиgit am
: Как использовать git am для применения исправлений из сообщений электронной почты?создание одного нового коммита с другим автором и коммиттером:
Посмотрите, например, этот случайно выбранный патч и соответствующий коммит:
Веб-интерфейсы Git, такие как GitHub и GitLab, могут создавать или не создавать автора! = Committer
Поскольку Git (Hub | Lab) хранит оба репозитория upstream и fork на одной и той же машине, они могут автоматически делать все, что вы можете делать и локально, в том числе:
Создать коммит слияния.
Не генерирует автора! = Коммиттер.
Сохраняет SHA или новый коммит без изменений и создает новый коммит:
Исторически это был первый доступный метод на GitHub.
В местном масштабе это сделано с
git merge --no-ff
.Это производит два коммита на запрос на извлечение и сохраняет ветвь в истории git.
перебазировать поверх
master
GitHub также взламывает коммиты для установки коммиттера == кто бы ни нажал кнопку слияния. Это не является обязательным, и даже не выполняется по умолчанию локально
git rebase
, но это обеспечивает подотчетность сопровождающему проекта.Git tree теперь выглядит так:
что точно так же, как и в
git apply
патчах по электронной почте.На данный момент на GitHub:
https://help.github.com/articles/about-merge-methods-on-github/
Как установить коммитер нового коммита?
Лучшее, что я мог найти, это использовать переменные окружения для переопределения коммиттера:
Как получить коммиттера и дату фиксации данного коммита?
Только данные автора по умолчанию включены
git log
.Чтобы увидеть дату коммиттера вы можете:
Отформатируйте журнал специально для этого:
где
cn
иcd
стоятьCommitter Name
иCommitter Date
используйте
fuller
предопределенный формат:Смотрите также: Как настроить 'git log' для отображения 'date commit'
перейти на низкий уровень и показать все данные фиксации:
Как установить дату коммиттера для нового коммита?
git commit --date
только устанавливает дату автора: для даты коммиттера лучшее, что я мог найти, было с переменной окружения:Смотрите также: В чем разница между автором и коммиттером в Git?
Как Git хранит автора против коммиттера внутри?
Смотрите: Каков формат файла объекта git commit?
По сути, фиксация - это текстовый файл, который содержит два поля, разделенных строками:
Это проясняет, что оба являются двумя полностью независимыми записями данных в объекте фиксации.
источник
GIT_COMMITTER_*
переопределениями, git все равно откажется выполнять коммит, если вы не установили коммиттер по умолчанию, используяgit config
.GIT_{COMMITTER,AUTHOR}_EMAIL
@Ciro Santilli 新疆 改造 中心 六四 事件 法轮功предлагается использовать
Чтобы не повторять имя и адрес электронной почты, вы можете использовать их повторно
который сначала устанавливает переменные в отдельных командах, затем использует их для
git commit
вызова (обратите внимание на двойные скобки).источник