Wie richte ich Benutzernamen und Passwörter für verschiedene Git-Repos ein?
16
─[$] cat ~/.gitconfig
[user]
name = Shirish Agarwal
email = [email protected]
[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?
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
(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.
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.
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
credential.${remote}
undcredential.helper
. Gibt es eine Dokumentation, auf die Sie hinweisen können, da ich zum ersten Mal darüber lese?${remote}
Der Protokoll- und Hostname-Teil der URI, die Sie klonen möchten,helper
verweist auf ein Hilfsprogramm.Für diejenigen, die das später fanden - ich hatte Schwierigkeiten damit und brachte es schließlich zum Laufen
https / credentials.helper / Ubuntu
git config --global --unset credentials.helper
git config --unset credential.helper
Erstellen Sie eine Anmeldedatei für jedes Repo: (in jedem Repo)
Nicht zu sagen, dass es der beste oder der einzige Weg ist - aber es hat nach einigen frustrierenden Stunden für mich funktioniert.
quelle