Переключение между идентификаторами пользователя в одном Git на одном компьютере
У меня есть ОДИН репозиторий на GitHub, позвоните ему Repo-1
.
Я хочу сначала получить доступ к этому репозиторию как по умолчанию Git.
Позвоните этому пользователю User-1
.
Я создал SSH keypair, все отлично, работает хорошо.
Я сделал репозиторий ДРУГОЕ на GitHub, позвоните ему Repo-2
.
I не внес изменений в локальный Git, на моем ноутбуке. Никаких конфигурационных изменений, ничего.
Теперь - я хочу клонировать из Repo-1
как User-2
(но с того же ноутбука).
Прежде всего: это вообще возможно?
Может локальный Git на одном коммутаторе ноутбука между "учетными записями пользователей" и присутствует как User-2
? И затем, из этого тождества, клон из Repo-1, внесите некоторые изменения, а затем нажмите на Repo-1
?
Если возможно, как это сделать?
Ответы
Ответ 1
У вас есть глобальный .gitconfig, где вы уже настроили свои SSH-ключи/информацию о пользователе. Глобальный .gitconfig переопределяется локальным gitconfig - файлом "config" в вашей папке .git(если он не существует, вам может понадобиться его создать).
Например, вы можете скопировать файл .gitconfig в папку .git(и переименовать его в "config" ) и просто изменить строки, которые хотите изменить (возможно, github.user и github.token), или создать новый файл с двумя строками в нем.
Если вы предпочитаете командную строку "git config", вы можете избежать всех перемещений файлов, исключив опцию "--global".
Ответ 2
Вам нужно определить, действительно ли у вас две пары ключей ssh или два письма, которые вы хотите использовать. Ключ ssh связан с учетными записями, как описано здесь.
Ключ ssh (в частности, закрытый ключ) в основном предоставляет вашему клиенту разрешение git для подключения к github и, следовательно, разрешение на push. Это отдельно от идентификатора пользователя, который является только адресом электронной почты в ваших сообщениях фиксации.
Если у вас есть две ssh keypairs, каждая из которых связана с одной учетной записью, следуйте этим инструкциям для создания файла ~/.ssh/config
. Ключевой частью является использование другого ssh psuedo-host для каждой учетной записи:
# Default GitHub user (joe)
Host github.com
HostName github.com
User git
IdentityFile /Users/joe/.ssh/id_rsa
# Client user (client)
Host github-client
HostName github.com
User git
IdentityFile /Users/joe/.ssh/id_rsa_client
Затем вы используете два соответствующих пульта:
git clone [email protected]:joe/my_repo.git
и
git clone [email protected]:client/his_repo.git
Если вы просто хотите использовать два электронных письма, вы можете просто дать каждому клону отдельный .git/config
с желаемыми настройками [user]
.