как настроить имя пользователя и пароли для разных репозиториев git?

17
─[$] cat ~/.gitconfig

[user]
    name = Shirish Agarwal
    email = xxxx@xxxx.xxx
[core]
    editor = leafpad
    excludesfiles = /home/shirish/.gitignore
    gitproxy = \"ssh\" for gitorious.org
[merge]
    tool = meld
[push]
    default = simple
[color]
    ui = true
    status = auto
    branch = auto

Теперь я хочу поместить свои учетные данные git для github, gitlab и gitorious, чтобы каждый раз мне не приходилось искать учетные данные в браузере. Как это можно сделать, чтобы это было автоматизировано?

Я бегу зш

Shirish
источник

Ответы:

21

Использование SSH

Общий подход для обработки аутентификации git - это делегировать его SSH. Обычно вы устанавливаете свой открытый ключ SSH в удаленном хранилище ( например, на GitHub ), а затем используете его всякий раз, когда вам нужно пройти аутентификацию. Конечно, вы можете использовать ключевой агент, либо обработанный вашей рабочей средой, либо вручную с помощью ssh-agentи ssh-add.

Чтобы избежать необходимости указывать имя пользователя, вы можете настроить его и в SSH, в ~/.ssh/config; например у меня есть

Host git.opendaylight.org
  User skitt

и тогда я могу клонировать с помощью

git clone ssh://git.opendaylight.org:29418/aaa

(обратите внимание на отсутствие имени пользователя там).

С помощью gitcredentials

Если подход SSH не применяется ( например, вы используете репозиторий, доступ к которому осуществляется через HTTPS), у git есть собственный способ обработки учетных данных с использованием gitcredentials(и, как правило, git-credential-store). Вы указываете свое имя пользователя, используя

git config credential.${remote}.username yourusername

и помощник по учетным данным, используя

git config credential.helper store

(укажите --global, хотите ли вы использовать эту настройку везде).

Затем при первом обращении к хранилищу git запросит ваш пароль, и он будет сохранен (по умолчанию в ~/.git-credentials). При последующем доступе к хранилищу вместо сохраненного пароля будет использоваться сохраненный пароль.

Стивен Китт
источник
1
Можете ли вы рассказать немного об credential.${remote} и credential.helper. Есть ли какая-то документация, на которую вы могли бы указать, поскольку я впервые читаю об этом.
Шириш
Я ответил на справочную страницу в своем ответе, это документация. ${remote}является частью протокола и имени хоста URI, который вы хотите клонировать, helperуказывает на вспомогательную программу.
Стивен Китт
1
Есть также глава Pro Git на эту тему.
Стивен Китт
7

Для тех, кто нашел это позже - у меня были трудности с этим и, наконец, он заработал

https / credentials.helper / Ubuntu

  1. Отключить глобально:
    git config --global --unset credentials.helper
  2. Сбросить локально: (в каждом репо) git config --unset credential.helper
  3. Создать файл учетных данных для каждого репо: (внутри каждого репо)

    git config credential.helper 'store --file ~/.git_reponame_credentials'
    

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

SteveJ
источник
похоже на то, что Стивен Китт поделился выше.
Шириш
2
@shirish не совсем, третий пункт был тем, который мне был нужен - возможность указать, где находятся файлы.
Мартиньш
@shirish; Кроме того, в инструкциях Kitts не указывается установка учетных данных, что было для меня решающим компонентом, поскольку я уже установил их глобально.
SteveJ
У меня также были трудности с этим, поскольку это не так, как будто все репозитории git. вы получите бы из того же источника / магазина. Второе лучше, но гораздо труднее работать в реальности. Еще спасибо, что поделились. @SteveJ
Шириш