【Git】Многопользовательская конфигурация Git

Введение: При работе мы иногда сами создаем демо-версии проектов для реализации некоторых функций, но мы не хотим размещать наш демонстрационный код на платформе складского кода компании (GitLab) для управления, поэтому мы просто хотим разместить его на собственном GitHub. или Управление в Gitee, поэтому вам необходимо настроить многопользовательский режим Git.

В этой статье мы настроим двух пользователей на gitLab и gitee (поскольку GitHub всегда жалуется на невозможность входа в систему и слишком ленив для научного серфинга в Интернете) и выполним операции git над проектами, к которым они принадлежат соответственно. аналогично настройке нескольких пользователей. Частично работает.

1. Очистить глобальную конфигурацию

Выполните команду, чтобы проверить наличие глобальной конфигурации:

git config --global --list

Если есть информация user.name и user.email, выполните следующую команду, чтобы очистить ее:

git config --global --unset user.name
git config --global --unset user.email

2. Переключите командную строку в каталог ssh.

cd ~/.ssh

3. Сгенерируйте публичный и приватный ключи для GitLab и Gitee.

ssh-keygen -t rsa -C “代码仓库注册的邮箱”

После нажатия клавиши ENTER появится следующее приглашение:

Генерация пары открытых/частных ключей. Введите файл, в котором нужно сохранить ключ
(/Users/jitwxs/.ssh/id_rsa):

Введите здесь имя открытого ключа. По умолчанию он называется id_rsa. Чтобы отличить его от последующей конфигурации gitee, введите здесь id_rsa_gitlab. После ввода нажмите Enter до конца, и пара ключей будет сгенерирована.
Вставьте сюда описание изображения

Затем начните генерировать пару ключей хранилища на gitee. Шаги такие же, как указано выше. Имя сгенерированного открытого ключа называется: id_rsa_github (на самом деле вы можете называть его как хотите. Я назвал его здесь неправильно, и это github ).
После завершения этого шага эти файлы будут созданы в каталоге «/c/Users/Administrator/.ssh/».
Вставьте сюда описание изображения

4. Перейдите в соответствующий репозиторий кода и добавьте ключи SSH.

Для GitLab откройте id_rsa_gitlab.pub и скопируйте их все, затем перейдите на склад, чтобы добавить их. Скопированный контент копируется в ключ. Название можно называть как угодно, и оно, кажется, добавляется автоматически.
Вставьте сюда описание изображения

5. Добавьте закрытый ключ

На предыдущем шаге мы добавили открытый ключ на сервер github или gitlab. Нам также необходимо добавить закрытый ключ локально, иначе его нельзя будет использовать. Добавлять команды также очень просто:

ssh-add ~/.ssh/id_rsa_gitlab // 将 GitLab 私钥添加到本地
ssh-add ~/.ssh/id_rsa_gitee // 将 Gitee 私钥添加到本地

если оно появится

Не удалось открыть соединение с вашим агентом аутентификации.

Затем сначала выполните следующую команду, чтобы полностью решить эту проблему.

ssh-agent bash

После завершения добавления вы можете проверить его, выполнив ssh-add -l. Если оно отображается, как показано ниже, все в порядке.

ssh-add -l
3072 SHA256:************ “邮箱”(RSA)
3072 SHA256:************ “邮箱”(RSA)

6. Ключи управления

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

Отредактируйте файл конфигурации в каталоге ~/.ssh. Если он не существует, его необходимо создать.
Содержание следующее:

Хост gitlab
Имя хоста gitlab.com
Пользователь usergitlab
IdentityFile ~/.ssh/id_rsa_gitlab
Хост gitee
Имя хоста gitee.com
Пользователь пользователь
IdentityFile ~/.ssh/id_rsa_gitee

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

Хост: псевдоним веб-сайта склада, выберите его по своему усмотрению (личное предложение может совпадать с именем хоста).
Имя хоста: доменное имя веб-сайта склада (PS: IP-адрес также должен быть в порядке).
Пользователь: имя пользователя на веб-сайт склада
IdentityFile: абсолютный путь к закрытому ключу.

7. Проверка

Примечание. Между git и @ нет пробела.

ssh -T git@github.com 

Появится следующее сообщение, подтверждающее успешность настройки.

$ ssh -T git@gitee.com
Hi user! You've successfully authenticated, but GITEE.COM does not provide shell access.

Jan@Jancar MINGW64 ~/.ssh
$ ssh -T git@gitlab.com
Welcome to GitLab, user!

8. Конфигурация склада

поздравляю! После завершения вышеуказанной настройки вы, по сути, завершили все настройки. Введите склады, прикрепленные к github и gitlab соответственно, и в это время вы сможете выполнять операции git. Но не волнуйтесь: если вы отправите модификацию хранилища в это время, вы обнаружите, что отправленное имя пользователя становится именем хоста вашей системы.

Это связано с тем, что конфигурация git разделена на три уровня: Система —> Глобальный —> Локальный. System — уровень системы, Global — глобальная конфигурация, Local — уровень склада, а приоритет — Local > Global > System.

Поскольку мы не настроили имя пользователя для хранилища и не очистили глобальное имя пользователя вначале, если вы отправите запрос в это время, вы будете использовать имя пользователя системного уровня, которое является именем хоста вашей системы.

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

git config --local user.name "имя пользователя"
git config --local user.email "email"

После выполнения выполните следующую команду, чтобы просмотреть всю информацию о конфигурации этого хранилища:

git конфиг --local --list

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

О [email protected]: разрешение отклонено (открытый ключ)

Очевидно, мое выполнение в каталоге .ssh было успешным, но оно не попало на склад для отправки,
В каталоге .ssh
Вставьте сюда описание изображения
поэтому я задавался вопросом, связано ли это как-то с HostName и Host, потому что мои HostName и Host были разными,
Вставьте сюда описание изображения
поэтому я подумал, что подумал о попытке ssh -T git@gitee в каталоге склада
Вставьте сюда описание изображения
Неожиданно это удалось, и потом я внезапно это понял.

Здесь есть два решения
: 1. Измените Host и HostName, чтобы они были одинаковыми (начните с шага 6 этой статьи).
2. Измените удаленный URL-адрес в /.git/config в каталоге хранилища с
url = [email protected]: name/demo -collection.git
изменен на url = git@gitee:name/demo-collection.git
Вставьте сюда описание изображения

Guess you like

Origin blog.csdn.net/tuhuanxiong/article/details/131421190
Git