Как управлять и переключать несколько учетных записей github локально?

GitHub

предисловие

У большинства из нас есть такая проблема: у компании есть аккаунт на 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 выглядит следующим образом:

  1. Настройки → Управление дополнительными функциями → Добавить функции → [Сервер OpenSSH]
  2. Управление компьютером → Службы и приложения → Службы → Агент аутентификации 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.Если она есть в других операционных системах, вы можете напрямую заменить ее соответствующей рабочей командой.

материал