предисловие
У большинства из нас есть такая проблема: у компании есть аккаунт на github, который специально подготовлен для работы. А еще у нас есть свой закрытый аккаунт на гитхабе, мы не имеем ничего общего со своими проектами и пишем о том, что нам интересно. Однако как нам переключить github компании на нашу собственную личную учетную запись github на компьютере?
Моя компания рекомендует использовать smartgit для упрощения операций с git, но я не могу переключиться на свою учетную запись на нем, что означает, что я должен использовать свою личную учетную запись на своем компьютере. о, это действительно раздражающий вопрос.
После поиска информации в гугле методом проб и ошибок мне, наконец, удалось решить эту проблему. Теперь позвольте мне объяснить, как решается следующее.
По сути, это просто вопрос балансировки конфигураций git и ssh — на самом деле это не так плохо, как кажется. —Michael Herman
Процесс работы
Его операции включают
- Создать ssh-ключ
- Добавьте ключ в учетную запись github;
- Создайте файл конфигурации для управления отдельными ключами
- обновить сохраненный ключ
- Протестируйте git clone и git push
- Как переключать учетные записи github на терминале
1. Создайте ключи SSH
В моем случае у меня есть две учетные записи github, одна для работы, имя пользователя yuanzhen-kooboo, а другая частная: huangyuanzhen. Итак, я собираюсь создать два ключа, по одному для каждой учетной записи:
Операции:
- открыть командную строку;
- Введите команды последовательно:
cd ~/.ssh
ssh-keygen -t rsa -C "1356409766@qq.com"
ssh-keygen -t rsa -C "3083074260@qq.com"
- При появлении запроса «Введите файл для сохранения ключа» сохраните файл как id_rsa_. В моем примере я сохраняю файлы как ~/.ssh/id_rsa_personal и ~/.ssh/id_rsa_company;
Эффект показан на рисунке:
Найдите C:\Users\huangyuanzhen\.ssh, вы увидите, что создаются следующие четыре файла:
- id_rsa_personal
- id_rsa_personal.pub
- id_rsa_company
- id_rsa_company.pub
2. Привяжите новый ключ к учетной записи github
- Id_rsa_personal.pub используйте Блокнот, чтобы открыть файл, выберите все копии;
- Перейдите в мою личную учетную запись github, найдите настройки, откройте ее, щелкните параметр «Ключи SSH и GPG», вы увидите, что есть кнопка «Добавить ключ SSH», вставьте только что скопированный контент в текстовую область и добавьте связанный заголовок; После успеха это выглядит так:
- Напротив, повторите соответствующие операции на других аккаунтах, в моем случае вставьте содержимое id_rsa_company.pub в ssh моего рабочего аккаунта yuanzhen-kooboo;
3. Создайте файл конфигурации конфигурации для управления ключами
Создайте файл конфигурации в каталоге ~/.ssh/
echo test>config
Найдите этот файл и откройте его в редакторе (у меня это vscode), затем напишите в файл следующее и сохраните:
# huangyuanzhen
Host personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
# yuanzhen-kooboo
Host company
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
Здесь наше имя хоста не github.com, а личное и корпоративное. Разница в том, что теперь мы добавляем новый файл идентификации, который мы создали ранее: id_rsa_;
4. Обновите сохраненный ключ
Перед обновлением хранилища нам нужно проверить, включена ли локальная служба OpenSSH. В противном случае это пойдет не так.
Процесс запуска службы ssh выглядит следующим образом:
- Настройки → Управление дополнительными функциями → Добавить функции → [Сервер OpenSSH]
- Управление компьютером → Службы и приложения → Службы → Агент аутентификации OpenSSH и сервер OpenSSH → щелкните правой кнопкой мыши
Вот что вы видите после запуска:
После запуска службы SSH мы можем использовать команду ssh.Очистите текущие сохраненные учетные данные:
C:\Users\huangyuanzhen>ssh-add -D
// All identities removed.
Добавьте новые ключи:
C:\Users\huangyuanzhen\.ssh>ssh-add id_rsa_company
Identity added: id_rsa_company (id_rsa_company)
C:\Users\huangyuanzhen\.ssh>ssh-add id_rsa_personal
Identity added: id_rsa_personal (id_rsa_personal)
Проверьте это! Распознает ли github эти ключи, введите в cmd:
ssh -T personal
Вы можете увидеть подсказку «Привет, huangyuanzhen! Вы успешно прошли аутентификацию, но GitHub не предоставляет доступ к оболочке». Это показывает, что github может распознавать эти ключи. Прохладный !
5. Протестируйте клон и нажмите
тестовый клон git
Возьмите мою личную учетную запись в качестве примера, я хочу клонировать репозиторий Look-Thinking из учетной записи huangyuanzhen в локальную, а затем управлять ею.
При вводе cmd:
git clone git@personal:huangyuanzhen/Look-Thinking.git
Вы можете видеть, что репозиторий может быть успешно клонирован:
Если вы хотите управлять складом, выполните команду «cd Look-Thinking → code».. Это очень удобно?проверить git push
В качестве примера возьмем операцию на моей частной учетной записи github huangyuanzhen. Создайте репозиторий рабочих тестов в учетной записи, а затем создайте тестовую папку локально:
E:\mkdir test
E:\cd test
E:\test>echo test>readme.md
После создания файла readme.md отправьте его на github;
git init
git add .
git commit -am "first commit"
git remote add origin git@personal:huangyuanzhen/test.git
git push -u origin master
После успешного нажатия на файл следующим образом:
Посмотреть результаты локальных операций можно на readme.md в учетной записи github. git pull такой же.
Как мы переключаем учетные записи с помощью командной строки?
Если соединение с удаленным хранилищем было установлено ранее с помощью git remote add, нам нужно сначала очистить текущее соединение, иначе будет сообщено об ошибке: «фатальный: удаленный источник уже существует.»; после очистки текущего соединения, затем подключитесь на склад в новой учетной записи, например:
git remote rm origin
git remote git add origin git@company:yuanzhen-kooboo/work-test.git
Здесь мы отключились от учетной записи huangyuanzhen и переключились на учетную запись yuanzhen-kooboo.
После такой настройки нет необходимости использовать какие-то вспомогательные инструменты типа smartgit, а пользоваться командной строкой прямо в терминале, мне очень удобно! Попробуйте.
Примечание. Приведенная выше командная строка работает в Windows.Если она есть в других операционных системах, вы можете напрямую заменить ее соответствующей рабочей командой.