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

    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?
    Ответ написан
    Комментировать
  • Как пушить нескольким пользователям с одной учетной записи компьютера?

    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...
    Ответ написан
    Комментировать