Можно ли pu sh от имени другого пользователя? - PullRequest
1 голос
/ 11 апреля 2020

Я создаю веб-клиент PHP для управления контентом сайта с помощью Git. Я хочу связать коммиты с различными людьми, которые зарегистрированы в админ-панели. Я знаю, что могу сделать это с помощью:

git commit --message="foo" --author="John Doe <john@example.com>"

Однако вы также можете добавить pu sh в удаленный репозиторий (в моем случае размещенный на GitHub) через панель администратора. Я не могу установить имя / адрес электронной почты committer с чем-то вроде:

git push origin master --author="John Doe <john@example.com>"

... так что в GitHub автором является Джон Доу, но committer - это я:

git push example


Я заметил, что коммиттер основан на конфигурации Git. Поэтому я могу изменить его и получить правильный результат:

git push as correct author


У меня вопрос, нужно ли мне делать это:

git config user.name {{ panel user name }}
git config user.email {{ panel user email }}
git push origin master

... каждый раз, когда кто-то подталкивает к репо, или есть лучший способ? Мне нравится, как вы можете указать автора в git commit. Может ли это быть как-то достигнуто с помощью git push?

1 Ответ

3 голосов
/ 11 апреля 2020

Автор и коммиттер фактически сохраняются как часть самого объекта фиксации, когда он создается. Поэтому, если вы хотите настроить имена авторов и коммиттеров, вы должны сделать это при запуске git commit. В соответствии с официальной документацией вы можете установить информацию об авторе и коммиттере с помощью следующих четырех переменных среды:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL

Или, альтернативно, вы можете передать пользовательские временные параметры конфигурации в git использование опции -c .

git -c user.name="John Doe" -c user.email="john@example.com" commit ...

Я считаю, что более типично использовать переменные окружения из скрипта, но я не уверен, почему (или, действительно, если) это тот случай.

Обратите внимание, что команда push просто отправляет существующие объекты фиксации, включая их сохраненную информацию об авторе и коммиттере, на сервер. Вы не можете изменить автора или коммиттера во время нажатия, по крайней мере, со стандартным git, насколько я знаю. Я не уверен, как вам удается передать опцию --author в git push, но она не указана в документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...