Вы работаете в ложной предпосылке, поэтому вы не можете это исправить, пока не измените свой подход: git push
переносит существующие коммиты из одного хранилища в другое.В процессе передачи используются ваши учетные данные - те, что у менеджера для https://
, или сохраненные ssh для ssh://
- но коммиты уже заморожены: у них есть любое имя, заданное для их автора икоммиттер, и их нельзя изменить.
Следовательно, вам нужно делать новые и разные коммиты.Когда вы делаете коммиты, имя и адрес электронной почты, которые Git использует здесь, являются , а не данными, которые вы устанавливаете в каких-либо учетных данных, и не хранятся ни в каких ssh-ключах.Вместо этого они используют только ваши настройки user.name
и user.email
.
Если у вас есть существующие коммиты, которые вам нравятся, вы можете скопировать их в новые и улучшенные коммиты, которые почти точно так же, как и оригиналы, но немного отличается тем, что они:
имеют другое имя автора и коммиттера (ваши новые и улучшенные, исправленные) и
имеют разные хэш-идентификаторы (потому что они разные коммиты).
Затем вы можете сказать своему Git: Выбросить эти непристойные старые коммиты и использовать моиВместо этого новые блестящие улучшенные. Вы перестанете видеть старые коммиты и увидите только новые.Если вы присмотритесь, вы увидите, что у новых есть новые хеш-идентификаторы, хотя все else в них идентично.
Для этого см. Как изменитьимя автора и коммиттера и адрес электронной почты для нескольких коммитов в Git? .Обратите внимание, что вы должны быть осторожны, чтобы копировать только те коммиты, которые вы сделали, используя неправильные настройки имени и адреса электронной почты.Принятый ответ на связанный вопрос копирует любой коммитов, которые соответствуют одному конкретному адресу электронной почты, поэтому, если вы по ошибке использовали, скажем, адрес электронной почты Линуса Торвальдса и попробовали это в системе Linux, вы замените всеего коммитов.Но в типичном случае, когда ваш неправильный адрес электронной почты был уникальным, вы замените только несколько последних принятых вами ошибочных коммитов.
(Примечание: может помочь, если в вашем вопросе вы увидите точно какие шаги вы предпринимаете, и точные результаты. Например, если git push
терпит неудачу с non-fast-forward
, мы узнаем больше о том, что идет не так.)