Wie richte ich Benutzernamen und Passwörter für verschiedene Git-Repos ein?


16
─[$] 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

Jetzt möchte ich meine git-Anmeldeinformationen für github, gitlab und gitorious speichern, damit ich nicht jedes Mal die Anmeldeinformationen im Browser nachschlagen muss. Wie geht das, damit es automatisiert wird?

Ich laufe zsh

Antworten:


19

Verwendung von SSH

Der übliche Ansatz für die Handhabung der Git-Authentifizierung besteht darin, sie an SSH zu delegieren. Normalerweise legen Sie Ihren öffentlichen SSH-Schlüssel im Remote-Repository ( z. B. auf GitHub ) fest und verwenden ihn dann, wenn Sie sich authentifizieren müssen. Natürlich können Sie einen Schlüsselagenten verwenden, der entweder von Ihrer Desktop-Umgebung oder manuell mit ssh-agentund verwaltet wirdssh-add .

Um nicht den Benutzernamen angeben zu müssen, können Sie diesen auch in SSH konfigurieren ~/.ssh/config. zum Beispiel habe ich

Host git.opendaylight.org
  User skitt

und dann kann ich mit klonen

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

(Beachten Sie das Fehlen eines Benutzernamens).

Verwenden gitcredentials

Wenn der SSH-Ansatz nicht angewendet wird ( z. B. wenn Sie ein Repository verwenden, auf das über HTTPS zugegriffen wird), verwendet git gitcredentials(und normalerweise git-credential-store) eine eigene Methode zum Behandeln von Anmeldeinformationen . Sie geben Ihren Benutzernamen mit

git config credential.${remote}.username yourusername

und der Anmeldeinformationshelfer verwendet

git config credential.helper store

(Geben --globalSie an , ob Sie dieses Setup überall verwenden möchten.)

Wenn Sie dann zum ersten Mal auf ein Repository zugreifen, werden Sie von git nach Ihrem Kennwort gefragt und es wird gespeichert (standardmäßig in ~/.git-credentials). Bei späteren Zugriffen auf das Repository wird das gespeicherte Kennwort verwendet, anstatt Sie nachzufragen.


1
können Sie ein wenig über erarbeiten credential.${remote} und credential.helper. Gibt es eine Dokumentation, auf die Sie hinweisen können, da ich zum ersten Mal darüber lese?
— Shirish

Ich habe in meiner Antwort auf die Hilfeseiten verlinkt, das ist die Dokumentation. ${remote}Der Protokoll- und Hostname-Teil der URI, die Sie klonen möchten, helperverweist auf ein Hilfsprogramm.
— Stephen Kitt

1
Es gibt auch ein Kapitel von Pro Git zum Thema.
— Stephen Kitt

6

Für diejenigen, die das später fanden - ich hatte Schwierigkeiten damit und brachte es schließlich zum Laufen

https / credentials.helper / Ubuntu

  1. Global deaktivieren:
    git config --global --unset credentials.helper
  2. Lokal nicht gesetzt: (In jedem Repo) git config --unset credential.helper
  3. Erstellen Sie eine Anmeldedatei für jedes Repo: (in jedem Repo)

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

Nicht zu sagen, dass es der beste oder der einzige Weg ist - aber es hat nach einigen frustrierenden Stunden für mich funktioniert.


scheint ähnlich zu sein, was Stephen Kitt oben geteilt hat.
— Shirish

2
@ Shirish nicht wirklich, der dritte Punkt war der, den ich brauchte - Option, um anzugeben, wo sich die Dateien befinden.
— Mārtiņš Briedis

@shirish; In den Kitts-Anweisungen wird auch nicht angegeben, wie die Anmeldeinformationen festgelegt werden sollen. Dies war eine wichtige Komponente für mich, da ich sie bereits global festgelegt hatte.
— SteveJ

Ich hatte auch Schwierigkeiten damit, da es nicht so ist, als ob alle Git-Repos. Sie erhalten würde von der gleichen Quelle / Geschäft sein. Der zweite ist besser, aber es ist viel frustrierender, in der Realität zu arbeiten. Trotzdem danke fürs Teilen. @SteveJ
— shirish
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.