Изменить автора и адрес электронной почты прошлого коммита в конкретной ветке после нажатия - PullRequest
0 голосов
/ 07 ноября 2018

Поэтому я забыл добавить свое имя и адрес электронной почты в git config, и после того, как я отправил изменения, я получил имя по умолчанию. В основном это выглядит так:

  1. [Мое имя] - коммит (ветка 'feature_1') - НАИБОЛЕЕ ПОСЛЕДНИЙ
  2. [Имя по умолчанию] - коммит (ветка 'feature_1')
  3. [Имя моего друга] - коммит (ветка 'feature_2')
  4. [Мое имя] - коммит (ветка 'master')

Как мне изменить имя и адрес электронной почты второго коммита в этом списке (сверху вниз), не затрагивая другие вещи или не испортив ветки?

РЕДАКТИРОВАТЬ: я забыл добавить, что я единственный, кто работает над этой функцией ветви.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Вы можете перебазировать свою ветку, что позволит вам «повторить» коммит и получить его с вашим именем. Тогда вам нужно будет принудительно нажать изменения на пульте.

Команды для этого:

git rebase -i <SHA before the commit with the default name>

Вы получите список коммитов, для которого с именем по умолчанию укажите, что вы хотите «перефразировать» его. Сохраните сообщение о коммите и ваша история будет обновлена.

Чтобы обновить пульт, вы должны сделать git push -f. Это говорит git, что ваши изменения должны перезаписать то, что находится в удаленном хранилище.

ЭТО НЕ РЕКОМЕНДУЕТСЯ

Выполнение вышеизложенного меняет историю и вызовет проблемы, если другие люди также работают над этой веткой. У них будут проблемы, когда они попытаются обновить ветку с вашими изменениями. Если вы единственный, кто имеет дело с этой веткой, это не проблема.

Если над веткой работает несколько человек, просто оставьте коммит в покое. Вы не хотите переписывать историю, когда нажмете.

0 голосов
/ 07 ноября 2018

Вы на самом деле не можете без изменений ничего.Изменение любой информации из ревизии (например, с поправкой) создаст совершенно другую ревизию.Вы можете сделать это:

git checkout my-branch~2 # two revisions back from the branch tip
git commit --amend --author "Foo Bar <darthv@empire.com>"
git cherry-pick my-branch~2..my-branch # reapply revisions 3 and 4
git branch -f my-branch # set my-branch over here

Но с того момента, как вы внесли изменения, вы создаете совершенно новые ревизии, которые не связаны (с точки зрения истории) с оригинальными.Для замены ветви потребуется принудительное нажатие на пульте, другие разработчики должны будут знать об этом изменении, чтобы они могли выполнить перебазирование, если они уже работают поверх этой ветви.Во всяком случае, не особенно больно… если вы спросите меня, все будет как обычно.

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