як налаштувати ім'я користувача та паролі для різних git repos?


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, тому щоразу мені не доведеться шукати облікові дані у браузері. Як це можна зробити, щоб це було автоматизовано?

Я біжу zsh

Відповіді:


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. Чи є якась документація, яку ви могли б вказати, оскільки це я вперше читаю про це.
shirish

У своїй відповіді я пов’язаний з руками, ось це документація. ${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'
    

Не кажучи, що це найкращий спосіб чи єдиний спосіб - але це спрацювало для мене через кілька розчаруючих годин.


Здається, схоже на те, що Стівен Кіт поділяв вище.
сорока

2
@shirish не дуже, третій момент був мені потрібним - опцією, щоб вказати, де розташовані файли.
Mārtiņš Briedis

@shirish; Крім того, інструкції Кіттса не вказують скасування налаштування облікових даних, що було важливим компонентом для мене, оскільки я вже встановив їх у всьому світі.
SteveJ

У мене також виникли труднощі з цим, оскільки це не так, як ніби всі репоти. ви отримаєте б з того самого джерела / магазину. Другий - краще, але набагато більш гоміло працювати в реальності. Все-таки дякую за обмін. @SteveJ
shirish
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.