Как объединить пользователей в репозиторий git?

У меня есть репозиторий git, где я совершал коммит с разных компьютеров, поэтому в итоге я оказался двумя разными участниками, но на самом деле это один пользователь - я. Как я могу объединить этих пользователей в одного?


person Gulaev Valentin    schedule 06.01.2013    source источник


Ответы (3)


Вы должны установить одинаковое имя пользователя и адрес электронной почты на обеих машинах:

git config --global user.name <name>
git config --global user.email <email>

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

Вы можете обратиться к этому ответу: Как переписать коммиттера имена в репозитории git?

person manojlds    schedule 06.01.2013
comment
Что делать с существующими коммитами? - person Gulaev Valentin; 06.01.2013
comment
@GulaevValentin - Лучше оставить их в покое. Но если вы хотите изменить - stackoverflow.com/questions/1566809/ - person manojlds; 06.01.2013
comment
Используйте файл .mailmap в соответствии с предложением nulltoken. Он предназначен именно для этой цели, когда люди меняют подпись электронной почты с течением времени и в любом месте. - person Philip Oakley; 06.01.2013
comment
@PhilipOakley - Я не думаю, что это применимо здесь. OP, будучи новичком, не устанавливал пользователя и адрес электронной почты, и он был другим на двух машинах (по умолчанию с именем хоста и т. Д.). OP не требует добавления двух идентификаторов электронной почты (и в этом случае это даже не два действительных идентификатора электронной почты). Конечно, это основано на том, что я понимаю. - person manojlds; 06.01.2013
comment
@PhilipOakley это применимо в моем случае, большое спасибо за ответ. - person Gulaev Valentin; 22.01.2013

@SergiuDumitriu прав, добавляя все ваши электронные письма в свою учетную запись на https://github.com/settings/emails. Таким образом, вся ваша проделанная работа (из разных писем) будет связана с вашей учетной записью GitHub и собрана в разделе «Графики» каждого репозитория, в который вы внесли свой вклад.

Однако, чтобы это происходило и в вашем локальном репозитории на вашем компьютере, вам нужно будет зафиксировать .mailmap файл в корне вашего репозитория, который будет связывать все ваши электронные письма. Once можно найти дополнительную информацию об этой функции git и формате файла в git shortlog документация.

Таким образом, запуск $ git shortlog -s -n правильно объединит все ваши идентификаторы.

person nulltoken    schedule 06.01.2013
comment
Большое спасибо за ответ, именно за $ git shortlog -s -n это помогает мне понять, как работает .mailmap - person Gulaev Valentin; 22.01.2013

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

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

Если вы все еще хотите это сделать, используйте git-filter-branch --env-filter, как показано в этот ответ.

person Sergiu Dumitriu    schedule 06.01.2013