Как я могу добавить свой адрес электронной почты / имя пользователя к старым коммитам без какого-либо адреса электронной почты / имени пользователя? - PullRequest
1 голос
/ 02 апреля 2020

В настоящее время я учусь в классе SWE, в котором мы все работаем над проектом в одном репозитории Github.

Нас в основном оценивают по сценарию, который проходит через наши коммиты в репозиторий, но я, к сожалению, не осознавал, что у меня не настроен адрес электронной почты и имя пользователя в моем терминале для Git, и в результате все кода, который я вставил в наш репозиторий, не связан с моей учетной записью Github.

У профессора есть скрипт, который анализирует эти коммиты и назначает оценку в зависимости от того, что выдает скрипт, но, поскольку у меня не настроен адрес электронной почты / имя пользователя в моем терминале, этот скрипт не будет перехватывать мои коммиты.

Есть ли способ исправить это?
Я нашел эту статью, но я не думаю, что скрипт будет работать, так как с этими коммитами нет сообщений электронной почты. Заранее спасибо.

1 Ответ

1 голос
/ 02 апреля 2020

Будет проблематично c, если все отправят в одну и ту же ветку, потому что переписывание вашей локальной истории с правильным именем пользователя / адресом электронной почты будет означать git push --force, что означает, что SHA1 из коммитов изменится на стороне удаленного хранилища.

Если у вас есть pu sh в отдельной ветке, вы можете без каких-либо последствий заставить pu sh, кроме того, чтобы предупредить профессора, и убедитесь, что сценарий рассмотрит вашу недавно написанную ветвь.

Проверьте, действительно ли нет электронной почты, связанной с вашим последним коммитом с :

git log --format='%ae' HEAD

OP ddipi подтвердите в комментариях :

Я использовал команду git log --format='%ae' HEAD, чтобы выяснить, действительно ли я использовал свой старый адрес электронной почты.
Я добавил его в свою учетную запись Github, и проблема была решена.


Для сброса пользователя / электронной почты при фиксации я бы рекомендовал в эти дни использовать новый инструмент git filter-repo, который заменяет BFG и git filter-branch .
См. руководство пользователя .

Чтобы изменить имя пользователя и электронные письма о коммитах, вы можете создать файл почтовой карты в формате, принятом git-shortlog.
Например, если у вас есть файл с именем my-mailmap, вы можете запустить

git filter-repo --mailmap my-mailmap

, и если текущее содержимое этого файла выглядит следующим образом (если указанный файл почтовой карты управляется версией, исторические версии файла игнорируются):

Correct Name <correct@email.com> <old@email.com>

тогда мы можем обновить имя пользователя и / или адреса электронной почты на основе указанного сопоставления.

См. git shortlog раздел "Автор картографирования" для точного синтаксиса файла почтовой карты.

Или с обратными вызовами :

git-filter-repo --name-callback 'return name.replace(b"OldName", b"NewName")' \
   --email-callback 'return email.replace(b"old@email.com", b"new@email.com")'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...