Несколько git учетных записей: нет .ssh / config или S SH использование агента - PullRequest
1 голос
/ 01 марта 2020

Я хотел бы использовать несколько Git учетных записей сервера (с любыми из GitHub, GitLab, BitBubket et c.).

Учетные записи различаются по их адресам электронной почты, name1@email1.com и name2@email2.org и git настроены на использование этих адресов в соответствующих репозиториях

К «рабочему процессу изменения учетной записи» применяются следующие ограничения:

  1. Без касания / изменения S SH конфигурационные файлы (например, ~/.ssh/config, et c.) При добавлении / удалении / изменении репозиториев или серверов.
  2. Без необходимости запуска агента S SH, т.е. без ssh-add ....
  3. Без изменения переменных окружения.
  4. Без изменения инструкции git clone <address>.
  5. Изолировать клавиши S SH, используемые с git, от других клавиш S SH.
  6. Используйте один и тот же «рабочий процесс изменения учетной записи» во всех частных и publi c репозиториях.
  7. «Рабочий процесс изменения учетной записи» равен единице (1) шаг / команда.
  8. «Рабочий процесс изменения учетной записи» - один (1) раз на репозиторий (т. е. не каждый раз, когда вы переходите к работе с хранилищем).

Начальная настройка хранилища (которая также является однократной операцией) может включать более одного шага. Любые соглашения / предположения являются приемлемыми, если они не нарушают ограничения.

Несвязанные вопросы:

Это ответы, которые не удовлетворяют ограничениям.
Как правило, они требуют изменений в ~/.ssh/config и / или задействовать демон агента S SH:

  1. handle-множественный- git -счет
  2. с использованием- множественные git -счета
  3. множественные- git -счета-и-s sh ключ
  4. множественный GitHub -accounts-s sh -config
  5. несколько git пользователей на одном компьютере
  6. несколько GitHub- account-with- git -in- windows
  7. git - проблемы с несколькими учетными записями и репозиторием
  8. s sh -конфигурация-для-доступа-несколько-репо-не работает
  9. несколько учетных записей github-на-одном компьютере
  10. может-я-указать-несколько пользователей-для-себя-в-gitconfig
  11. setup-s sh -config-file -под несколькими учетными записями кода
  12. how-can-i-pu sh - git -с несколькими учетными записями на одной машине
  13. несколько учетных записей github-what-values-host-in-s sh -config
  14. как настроить несколько github-account-on-your-computer
  15. s sh -конфигурация с несколькими ключами для нескольких учетных записей пользователей gitlab
  16. разрешение доступа к личному имени пользователя github-to-personaluser-reponame- git -denied-to

1 Ответ

0 голосов
/ 01 марта 2020

Протестировано и работает:

Одношаговый «рабочий процесс изменения учетной записи»:

Вы делаете это один раз после клонирования - для любого репозитория, который был настройка для поддержки разработчиков, которые фиксируют использование нескольких git учетных записей .

git config --local --add include.path ../.git-config

Теперь, когда вы фиксируете / pu sh из этого репозитория, вы будете использовать учетную запись для этого репозитория.
Вам не нужно вносить какие-либо дополнительные изменения при перемещении в / из этого репозитория.

Установка в один шаг.

Это способ настройки "для поддержки разработчиков. которые фиксируют, используя несколько git учетных записей ":

  1. Клонируют репозиторий и Git фиксируют это:
pushd /src/path/to/git/repo
  tee --append .git-config > /dev/null <<'EOF'
  [core]
    sshCommand = ssh -o StrictHostKeyChecking=no -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -i ~/.config/git/$(git config --get --local --includes user.email) -F /dev/null
  EOF
popd

Допущения :

  • S SH файлы ключей имеют имена <name@email.com> (private) и <name@email.com>.pub (publi c).
  • S SH файлы ключей могут быть находится в любом месте, доступном для команды S SH.

Примечание: Это не влияет на пользователей, которые не используют несколько учетных записей. Они просто не включают Git фрагмент .git-config после клонирования. Кроме того: расположение файла ключей S SH соответствует спецификации Базового каталога XDG , но вы можете разместить ключи S SH там, где это наиболее безопасно, и вам не нужно менять S SH конфигурационный файл.

В вопросе указывалось, что Git настроен на фиксацию с использованием адреса электронной почты, используемого для именования файла ключа S SH, так что это уже будет сделано, но для полноты:

git config --local user.email name1@email1.com
...