Задать вопрос
@sergey-grey

Как пушить нескольким пользователям с одной учетной записи компьютера?

Есть один компьютер, на нем в разное время работают разработчики. Как пушить нескольким пользователям (у каждого свой репозиторий) с одного компьютера и с одной и той же учетной записи Windows? Как разлогиниться в гитхабе? Или может другие варианты...
  • Вопрос задан
  • 329 просмотров
Подписаться 2 Простой 2 комментария
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Если у вас такой коммунизм и используется общий комп и даже один профиль пользователя, то что мешает использовать общую учетку на гитхабе? Если репозитории лежат в разных аккаунтах гитхаба, то просто дайте права на запись этому общему пользователю.

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

git config --local user.name ...
git config --local user.email ...

Если хочется непременно разные аккаунты на гитхабе, то

Как разлогиниться в гитхабе?

Если отправляете по HTTPS, то придется каждый раз сбрасывать авторизацию после предыдущего пользователя
echo "url=https://github.com" | git credential reject

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

Для этого мы создаём в файле конфигурации ~/.ssh/config несколько виртуальных хостов
Host github-alice
        Hostname github.com
        IdentityFile=/home/user/.ssh/alice_key

Host github-bob
        Hostname github.com
        IdentityFile=/home/user/.ssh/bob_key

И поправьте ссылки на origin в своих репозиториях используя псевдоним виртуального хоста
git remote set-url origin git@github-alice:OWNER/alice-repo.git

Есть официальная инструкция
How do I use multiple accounts with the same hosting provider using SSH?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Drno
варианты работать под разными пользователями?))
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
Если точно знаем, что люди не будут специально творить пакости, и не вариант заводить разных Windows пользователей, то по идее можно попробовать следующим образом.

- каждый юзер должен иметь свой github аккаунт
- заводим на машине на каждого юзера свой ключ
- юзеры должны заимпортить свой ключ в настройки github
- создаем каждому пользователю свою рабочую папку (даже если они будут работать с одним и тем же репозиторием)
- создаем конфиги для каждой папки

Вот как, например, выглядят мои конфиги. Глобальный конфиг - для личных проектов. И есть еще отдельные конфиги на каждого работодателя. У меня все проекты лежат в ~/Projects, однако есть на каждое место работы подпапка ~/Projects/companyname, для которой использую кастомные настройки.

Глобальный конфиг

➜  ~ cat ~/.gitconfig
[user]
    name = Mikhail Osher
    email = mikhail.osher@gmail.com

[core]
    excludesfile = /Users/miraage/.gitignore
    autocrlf = false
    filemode = false
    pager = cat
    editor = nano

[includeif "gitdir:/Users/miraage/Projects/companyname/"]
    path = /Users/miraage/.gitconfig.companyname.inc

[branch]
    autosetuprebase = always

[init]
    defaultBranch = master

[oh-my-zsh]
    hide-status = 1



Конфиг для папки companyname

➜  ~ cat ~/.gitconfig.companyname.inc
[user]
    email = mikhail.osher@companyname.com



В Вашем случае, надо будет подменять IdentityFile для git+ssh подключения. Ответов в интернете на это вагон. Я бы в эти кастомные конфиги добавил core.sshCommand, который уже будет использовать правильный IdentityFile для каждого юзера. Будет полезным почитать ответы и комментарии https://superuser.com/questions/232373/how-to-tell...
Ответ написан
Комментировать
Правильней будет, если каждый пользователь будет иметь свою учётку.

Но если это по каким-то причинам невозможно, то каждому пользователю нужно перезаписывать SSH и Git файлы конфигурации перед началом работы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы