Переключение между идентификаторами пользователя в одном 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].