Git fordert mich immer wieder zur Eingabe eines Passworts auf

665

Ich benutze Git jetzt schon eine Weile, aber die ständigen Anfragen nach einem Passwort treiben mich an die Wand.

Ich verwende Mac OS X und GitHub und richte Git und meine SSH-Schlüssel gemäß den Anweisungen auf der GitHub- Seite "Git einrichten" ein .

Ich habe auch den Github-SSH-Schlüssel zu meinem Mac OS X-Schlüsselbund hinzugefügt, wie auf der Seite mit den Passphrasen für SSH-Schlüssel von GitHub erwähnt . Mein öffentlicher Schlüssel ist bei Git registriert.

Trotzdem muss ich jedes Mal, wenn ich versuche, Git zu ziehen, meinen Benutzernamen und mein Passwort eingeben. Gibt es etwas anderes als einen SSH-Schlüssel, den ich dafür einrichten muss?

Catherine
quelle
1
Dumme Frage, aber haben Sie überprüft, ob der SSH-Schlüssel funktioniert, wenn Sie einfach ssh mit git auf dem Computer verwenden?
Kurt Stutsman
4
Du meinst so etwas wie ssh -T [email protected]? Ja, das funktioniert gut (wenn auch etwas langsam).
Catherine
Für die https-URL können Sie (mit git1.8.3 +) einen Git-Anmeldeinformations-Helfer verwenden netrc. Ein vollständiges Beispiel finden Sie hier .
VonC
Ich bin ein Windows-Benutzer und hatte auch nach dem Hinzufügen meines öffentlichen Schlüssels zur Datei "authorized_keys" des Servers ein Problem mit der Kennwortanforderung. Was wirklich das Problem war, war, dass ich meine öffentlichen / privaten Schlüssel nicht im Ordner .ssh des Ordners c: \ program files \ git aufbewahrte. Wenn jemand mit einem solchen Problem konfrontiert ist, kopieren Sie bitte Ihre Schlüssel in diesen Ordner und versuchen Sie, sie zu drücken / zu ziehen.
Raja Amer Khan

Antworten:

797

Ich denke, Sie haben möglicherweise die falsche Git-Repository-URL.

Öffnen .git/configSie den Abschnitt [remote "origin"] und suchen Sie ihn. Stellen Sie sicher, dass Sie SSH verwenden:

ssh://[email protected]/username/repo.git

Sie können die SSH-URL auf der Hauptseite Ihres Repositorys sehen, wenn Sie auf Klonen klicken oder herunterladen und ssh auswählen .

Und NICHT der httpsoder der git:

https://github.com/username/repo.git
git://github.com/username/repo.git

Sie können jetzt nur mit dem SSH-Schlüssel anstelle des Benutzernamens und des Kennworts validieren .

Wenn Git sich darüber beschwert 'origin' has already been added , öffnen Sie die .configDatei und bearbeiten Sie das url = "..."Teil danach [remote origin]alsurl = ssh://github/username/repo.git


Gleiches gilt für andere Dienste. Stellen Sie sicher, dass die Adresse wie folgt aussieht:protocol://something@url

ZB .git/configfür Azure DevOps:

[remote "origin"]
    url = https://[email protected]/mystore/myproject/
    fetch = +refs/heads/*:refs/remotes/origin/*
static_rtti
quelle
4
Das kann es sein. Wenn ich git remote -v aufrufe, erhalte ich: origin github.com/Foo/Bar.git (holen) origin github.com/Foo/Bar.git (push), während es für die Arbeit mit SSH so scheint, als sollte es sein: origin git @ github.com: Foo / Bar.git (Abrufen) Ursprung [email protected]: Foo / Bar.git (Push) Dies kann daran liegen, dass ich mein Projekt ursprünglich mit der Mac-Anwendung von GitHub ( mac.github.com ) ausgecheckt habe . Irgendeine Idee, wie ich das beheben kann?
Catherine
8
Korrigieren Sie entweder die URL in der .git / config-Datei, reparieren Sie sie mit git-remote oder löschen Sie Ihr lokales Repo und klonen Sie es erneut mit der richtigen URL.
static_rtti
91
Nur um dies zu formulieren (wie ich es brauchte): Öffnen Sie .git / config und im [remote "origin"]Abschnittssatz url = ssh://[email protected]/username/Repo.git. Das hat bei mir funktioniert.
Greg K
13
Seltsam, die Lösung von @ GregK hat bei mir nicht funktioniert, aber url = [email protected]:organization/Repo.gitfunktioniert. +1 dafür, dass du mich auf den richtigen Weg geführt hast! Erfolg!
jmort253
2
Ich kann gar nicht genug betonen, wie wichtig es ist, mit ssh: // git @ github / [Benutzername] / [Reponame] zu klonen. Git ist, dass Sie einen Schlüssel für den Zugriff auf GIT verwenden möchten, ohne jedes Mal Ihren Benutzernamen und Ihr Kennwort eingeben zu müssen . Ich fand die einzige Möglichkeit, dies zu beheben, darin, das lokale Repo zu entfernen und erneut zu klonen. $ Gitit clone ssh: // git @ github / [Benutzername] / [reponame] .git
Gene Myers
555

Credential.helper konfigurieren

Führen Sie dies unter OS X (jetzt macOS) im Terminal aus :

git config --global credential.helper osxkeychain

Es ermöglicht Git, die Datei Keychain.app zu verwenden, um Benutzername und Passwort zu speichern und die Passphrase für Ihren privaten SSH-Schlüssel aus dem Schlüsselbund abzurufen.

Für Windows verwenden:

git config --global credential.helper wincred

Fehlerbehebung

Wenn der Git-Anmeldeinformations-Helfer korrekt konfiguriert ist, speichert macOS die Passphrase im Schlüsselbund. Manchmal kann die Verbindung zwischen SSH und den im Schlüsselbund gespeicherten Passphrasen unterbrochen werden . Führen Sie aus ssh-add -Koder ssh-add ~/.ssh/id_rsafügen Sie den Schlüssel erneut zum Schlüsselbund hinzu.

macOS v10.12 (Sierra) wechselt zu ssh

Für macOS 10.10 (Sierra) ssh-add -Kmuss nach jedem Neustart ausgeführt werden. Um dies zu vermeiden, erstellen Sie ~/.ssh/configmit diesem Inhalt.

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

Von der ssh_config manSeite am 10.12.2:

UseKeychain

Gibt unter macOS an, ob das System im Schlüsselbund des Benutzers nach Passphrasen suchen soll, wenn versucht wird, einen bestimmten Schlüssel zu verwenden. Wenn die Passphrase vom Benutzer bereitgestellt wird, gibt diese Option auch an, ob die Passphrase im Schlüsselbund gespeichert werden soll, sobald ihre Richtigkeit überprüft wurde. Das Argument muss "Ja" oder "Nein" sein. Der Standardwert ist "Nein".

Apple hat Technote 2449 hinzugefügt, das erklärt, was passiert ist.

Vor macOS Sierra wird sshein Dialogfeld angezeigt, in dem Sie nach Ihrer Passphrase gefragt werden, und es wird die Option angeboten, diese im Schlüsselbund zu speichern. Diese Benutzeroberfläche war vor einiger Zeit veraltet und wurde entfernt.

Orkoden
quelle
30
Dies ist bei weitem der beste Weg, da die Github-Anwendung für OSX (möglicherweise auch Windows) standardmäßig den https-Pfad für Git-Repos verwendet. Es gibt auch einen guten Grund für die Verwendung von https anstelle von ssh / git, da viele Unternehmensnetzwerke aus Sicherheitsgründen nur Datenverkehr auf Port 80 und 443 zulassen .
Codehugger
2
Sie benötigen Git 1.7.10 oder neuer, um den Helfer für Anmeldeinformationen zu verwenden.
Jbandi
3
+1 für keychain.app Lösung. Dies ist großartig für mich, da der Git-Server meines Arbeitgebers nur http unterstützt, das über Apache bereitgestellt wird, und sie dringend davon abraten, die .netrcDateimethode zu verwenden, mit der Ihr Passwort im Klartext angezeigt wird.
Josh
3
Hinweis: Ich habe den Fehler erhalten, 'credential-osxkeychain' is not a git command.da der Helfer für Anmeldeinformationen nicht installiert war. Ich habe die Anweisungen hier befolgt, um es zu installieren: help.github.com/articles/set-up-git#password-caching
Hugh
2
Vielen Dank für das Sierra-Update. Ich habe gerade ein Update durchgeführt und konnte nicht herausfinden, warum Github immer wieder nach pw gefragt hat, als ich die git config --global credential.helper osxkeychainKonfigurationsdatei in meinem .sshVerzeichnis hinzugefügt habe .
Pixel 67
139

Dies passierte mir beim Upgrade auf macOS v10.12 (Sierra). Es sieht so aus, als ob der SSH-Agent beim Upgrade gelöscht wurde.

$ ssh-add -L
The agent has no identities.

Einfach laufen hat ssh-addmeine vorhandene Identität gefunden. Ich gab das Passwort ein und konnte loslegen.

amcc
quelle
9
+1 durch Sierra-Upgrade gebrochen. Beachten Sie, dass das Kennwort das Kennwort für Ihren SSH-Schlüssel und nicht Ihr Mac-Benutzerkennwort ist.
Mbonness
1
Das Ausführen von ssh-add funktioniert, scheint jedoch durch Schließen des Terminalfensters zurückgesetzt zu werden. Vielleicht ist dies eine neue "Funktion".
Joshd
Heads up - dies geschah erneut mit einem anderen Sierra-Update (10.12.2), aber das gleiche Update gilt.
Brian
Weiß jemand, wie dies nach dem Schließen des Terminals nicht zurückgesetzt werden kann?
Nickjwallin
1
Ich hatte gerade mein MacBook Pro auf 10.12.2 aktualisiert und es hat meinen Git gebrochen. Die Verwendung von ssh-add hat bei mir total funktioniert. Danke @amcc!
Jimmyplaysdrums
68

Verwenden Sie dies: Ersetzen Sie github.com durch den entsprechenden Hostnamen

git remote set-url origin [email protected]:user/repo.git
Darrell Duane
quelle
Ich habe das bereits beim Anzeigen eingestellt git remote -v. Trotzdem werde ich immer noch zur Eingabe eines Passworts aufgefordert.
IgorGanapolsky
Gleich, ich habe festgelegt, was er vorgeschlagen hat, aber ich erhalte immer noch eine Aufforderung zur Eingabe des Passworts. Wie kann ich das verhindern?
Cyber8200
@IgorGanapolsky: Hast du jemals eine Lösung für dich gefunden?
Cyber8200
1
Das funktioniert richtig. Dies ist seltsam, dass die Remote-URL mit git@**keine Anmeldeinformationen anfordert und die URL mit https@**:). So fand ich dieses Dokument .
Sujit Kumar Singh
54

Wie bereits erwähnt, können Sie einen Kennwort-Cache-Helfer installieren. Ich wollte meistens nur den Link für andere Plattformen posten und nicht nur für Mac. Ich verwende einen Linux-Server und dies war hilfreich: Zwischenspeichern Ihres GitHub-Passworts in Git

Für Mac:

git credential-osxkeychain

Windows:

git config --global credential.helper wincred

Linux:

git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)
Chase Roberts
quelle
5
Ich musste zur dritten Antwort scrollen, um die Linux-Anweisungen zu sehen. Diese sollten in der primären Antwort enthalten sein, da es sich um ein häufig genanntes Problem handelt.
KoldBane
22

Suchen Sie auch, wer Sie nach der Passphrase fragt. Ist es Git oder Ihr SSH-Agent?

In meinem Fall git pullfragte mich jedes Mal, wenn ich es tat :

Enter passphrase for key '/work/username/.ssh/id_rsa':

Also nahm ich an, dass Git nach einer Passphrase fragte. Also suchte ich weiter nach Lösungen, um später festzustellen, dass mein SSH-Agent heruntergefahren war. Welches kann mit eval $(ssh-agent)und ssh-addwie angegeben behoben werden hier .

Füge auch unten einen kleinen Ausschnitt ein, den du zu deinem hinzufügen kannst ~/.bashrc Datei (oder einem gleichwertigen) sicherzustellen, dass Ihr SSH-Agent bei Ihrer Anmeldung gestartet wird.

Auf jeden Fall war dies ein ziemlich dummer Fehler, den ich gemacht habe, aber hier zu posten, nur für den Fall, dass es jemandem hilft, etwas Zeit zu sparen, damit er nicht den falschen Baum bellt, wie ich es getan habe.

# Start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."

    # Spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
    echo succeeded
    chmod 600 ${SSH_ENV}
    . ${SSH_ENV} > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . ${SSH_ENV} > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

Mithunpaul
quelle
Ziemlich sicher, dass Sie eine Zeile im obigen Code vermissen - gemäß stackoverflow.com/a/18915067/277023, die Sie haben müssenSSH_ENV="$HOME/.ssh/environment"
kellyfj
20
git config credential.helper store

Hinweis: Während dies praktisch ist, speichert Git Ihre Anmeldeinformationen im Klartext in einer lokalen Datei (.git-Anmeldeinformationen) unter Ihrem Projektverzeichnis (siehe unten für das "Home" -Verzeichnis). Wenn Ihnen das nicht gefällt, löschen Sie diese Datei und wechseln Sie zur Cache-Option.

Wenn Git Sie jedes Mal, wenn eine Verbindung zum Remote-Repository hergestellt werden muss, erneut nach Anmeldeinformationen fragt, können Sie den folgenden Befehl ausführen:

git config --unset credential.helper

So speichern Sie die Kennwörter in .git-Anmeldeinformationen in Ihrem% HOME% -Verzeichnis im Gegensatz zum Projektverzeichnis: Verwenden Sie das Flag --global

git config --global credential.helper store
Lokesh S.
quelle
9

Anleitung zu Git unter Windows und GitHub mit SSH zum Push / Pull: Eine illustrierte Anleitung zu Git unter Windows

  1. Laden Sie PuTTY herunter und installieren Sie es
  2. Setzen Sie die Umgebungsvariable 'GIT_SSH' = 'path \ to \ plink.exe' (im installierten Kittordner) - sehr wichtig !!!
  3. Starten Sie den Windows Explorer neu, damit die Umgebungsvariablen wirksam werden (die Eingabeaufforderung kann nicht nur neu gestartet werden).
  4. Führen Sie puttygen.exe aus, um einen neuen Schlüssel zu generieren, und kopieren Sie den öffentlichen Schlüssel auf die GitHub-Site
  5. Speichern Sie diesen neuen privaten Schlüssel an einem sicheren Ort auf der Festplatte (vorzugsweise nicht Dropbox ).
  6. Führen Sie putty.exe aus und verbinden Sie SSH mit github.co
  7. Gehen Sie schnell zum Startordner, indem Sie "shell: startup" ausführen.
  8. Starten Sie Ihren privaten Schlüssel mit Windows über einen Festzug. Erstellen Sie eine Verknüpfung im Startordner mit der Syntax "Pfad \ zu \ pageant.exe" "Pfad \ zu \ privater Schlüssel".
  9. Wir müssen die Einstellung 'puttykeyfile' nicht in .git / config unserer Repositorys festlegen
  10. Sehr wichtig ist, dass die "SSH-Klon-URL" von GitHub verwendet wird und nicht HTTPS.
Francois
quelle
Niemand sollte mehr Kitt verwenden. Mit den integrierten Windows 10-Dienstprogrammen können Sie jetzt alles tun. Lass Kitt, sei einfach Kitt.
Ian Smith
9

Führen Sie in Windows für Git 1.7.9+ den folgenden Befehl an der Eingabeaufforderung aus, um die Konfigurationsdatei in einem Texteditor zu öffnen:

    git config --global --edit

Fügen Sie dann in der Datei den folgenden Block hinzu, falls er nicht vorhanden ist, oder bearbeiten Sie ihn entsprechend:

    [credential "https://giturl.com"]
        username = <user id>
         helper = wincred

Speichern und schließen Sie die Datei. Sie müssen die Anmeldeinformationen nach der obigen Änderung nur einmal angeben.

Rohan
quelle
Das funktioniert perfekt, du hast meine Stunden gespart, jetzt kann ich mich auf meine Arbeit konzentrieren. Vielen Dank, Bruder.
Mohammed Sufian
9

Verwenden Sie den folgenden Befehl, um die Zeitüberschreitung zu verlängern, damit Sie das Kennwort für eine Weile erneut eingeben können

git config --global credential.helper 'cache --timeout 3600'

Ich habe es für Bitbucket und GitHub verwendet, es funktioniert für beide. Das einzige, was Sie tun müssen, 3600ist in Sekunden. Erhöhen Sie es auf das gewünschte Maß. Ich habe es geändert, 259200was ungefähr 30 Tage ist. Auf diese Weise gebe ich mein Passwort etwa alle 30 Tage erneut ein.

Ravi Kumar
quelle
1
Ok, ich habe festgestellt, dass dies nach einem Neustart nicht anhält, so dass Sie nach einem Neustart immer noch das Passwort eingeben müssen, unabhängig von der Zeitüberschreitung ...
Ben Winding
Dies ist ein guter Weg, um im Cache zu machen :) Zumindest meine Zeit gespart. Vielen Dank
ChikuMiku
@BenWinding, weil es Anmeldeinformationen im Speicher speichert.
z3dd
5

Ich glaube, Sie haben Ihr Problem behoben, aber ich sehe hier keine Lösung, die mir geholfen hat, also hier ist sie.

Terminal eingeben:

echo "" > ~/.ssh/known_hosts

Dadurch wird Ihre known_hostsDatei geleert, und Sie müssen jeden Host hinzufügen, den Sie verwendet und mit dem Sie eine Verbindung hergestellt haben, aber das Problem wurde behoben.

papan
quelle
1
cat /dev/null > ~/.ssh/known_hostswerde das gleiche tun.
der Blechmann
5
> ~/.ssh/known_hostsist noch kürzer :)
Collin Allen
rm ~ / .ssh / unknown_hosts sollte den Job auch machen. Ich würde jedoch davon abraten.
Orkoden
3
Wenn Sie einen Host aus ~ / .ssh / unknown_hosts entfernen müssen, gibt es einen weniger effektiven Weg als das Löschen der Datei. ~ / .ssh / unknown_hosts ist nur eine Textdatei. Wenn Sie die fehlerhaften Hosts in der Datei finden, können Sie deren Zeilen einfach löschen. Möglicherweise möchten Sie die Datei sichern, bevor Sie sie bearbeiten. Wenn Sie nur wenige Einträge in der Datei haben, ist das Löschen möglicherweise keine schlechte Idee. Ich arbeite auf vielen Servern, daher enthält mein ~ / .ssh / unknown_hosts Hunderte von Einträgen und ich bin nicht ganz bereit, sie alle zu löschen, um einige Einträge zu entfernen.
Tim Stewart
3
@papan Dies hindert Git nicht daran, mich nach meinem Passwort zu fragen!
IgorGanapolsky
5

Ich denke, die Antwort von static_rtti ist in gewissem Sinne hackig. Ich weiß nicht, ob dies früher verfügbar war, aber Git-Tools bieten jetzt Speicherplatz für Anmeldeinformationen.

Cache-Modus

$ git config --global credential.helper cache

Verwenden Sie den Cache-Modus, um Anmeldeinformationen für einen bestimmten Zeitraum im Speicher zu behalten. Keines der Passwörter wird jemals auf der Festplatte gespeichert und nach 15 Minuten aus dem Cache gelöscht.

Speichermodus

$ git config --global credential.helper 'store --file ~/.my-credentials'

Verwenden Sie den Speichermodus, um die Anmeldeinformationen in einer Nur-Text-Datei auf der Festplatte zu speichern. Sie laufen nie ab.

Ich persönlich habe den Store-Modus verwendet . Ich habe mein Repository gelöscht, es geklont und musste dann meine Anmeldeinformationen einmal eingeben.

Referenz: 7.14 Git Tools - Speicherung von Anmeldeinformationen

Ducktales
quelle
Für Windows credential.helper cachefunktioniert NICHT. Es sollte sein git config --global credential.helper wincred.
Paulo Merson
Das Speichern hat funktioniert und jetzt kann ich meine Änderungen festschreiben, ohne ständig nach einem Passwort zu fragen. Sie sind ein Lebensretter!
g4ost
Unter Linux hat das den Job für mich erledigt git config --local credential.helper store. In meinem Fall bin ich über HTTPS, auf diese Weise
gebe
3

Die Antwort von orkoden zur Verwendung des Schlüsselbunds mit Git in Ihrem Terminal war unvollständig und führt zu Fehlern. Dies müssen Sie tun, um den Benutzernamen und das Passwort zu speichern, die Sie im Terminal in Ihrem Schlüsselbund eingeben:

curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
sudo mv git-credential-osxkeychain /usr/local/bin
sudo chmod u+x /usr/local/bin/git-credential-osxkeychain

Dann treten Sie ein

git config --global credential.helper osxkeychain

Wenn Sie den Teil mit der Git-Konfiguration bereits vor dem Curl-Zeug erledigt haben, ist dies kein Problem. es wird funktionieren

Lukas
quelle
1
Was ist, wenn ich unter Linux bin?
IgorGanapolsky
3

Wie static_rtti oben sagte, ändern Sie

https://github.com/username/repo.git
git://github.com/username/repo.git

zu

ssh://[email protected]/username/repo.git

Ich selbst habe das httpsin der .git / config-Datei in geändert ssh, aber es hat immer noch nicht funktioniert. Dann sah ich , dass Sie müssen ändern github.comzu [email protected]. Eine gute Möglichkeit, die tatsächlich richtige URL zu erhalten, besteht darin, auf Ihre Projektseite zu klicken und auf Folgendes zu klicken:

Ändern Sie HTTPS in SSH, um die richtige URL zu erhalten

Fügen Sie dann diese URL zur Konfigurationsdatei hinzu.

CheesusCrust
quelle
Ich habe das schon in meiner Konfigurationskonfigurationsdatei. Was soll ich sonst noch überprüfen?
Cyber8200
Hast du es auch auf github.com geändert?
CheesusCrust
3

Unter Windows Subsystem für Linux (WSL) war dies die einzige Lösung, die ich gefunden habe:

eval `ssh-agent` ; ssh-add ~/.ssh/id_rsa

Es war ein Problem damit, dass der ssh-Agent nicht ordnungsgemäß in der WSL registriert wurde.

James Gentes
quelle
War ein Volltreffer, aber das hat mein Problem behoben.
Nam Kim
3

Wenn Sie verhindern möchten, dass Git Sie immer nach den Anmeldeinformationen Ihres GitHub-Repositorys fragt, können Sie dies problemlos tun.

Verwenden von SSH anstelle von HTTPS

Sie können die Ursprungsfernbedienung mithilfe von SSH anstelle von HTTPS aktualisieren. "

git remote set-url origin git@github.com:username/your-repo.git

Konfigurieren Sie Git so, dass Ihr Passwort und Ihr Benutzername gespeichert werden

So können Sie Git dazu bringen, den Benutzernamen und das Passwort zu speichern:

git config --global credential.helper store

Speichern Sie als Nächstes den Benutzernamen und das Kennwort für eine Sitzung:

git config --global credential.helper cache
Ahmed Bouchefra
quelle
2

Ich bin mit "Codehugger" einverstanden und unter Verwendung der Anweisung "Orkoden" hat es bei mir funktioniert - unter NetBeans 7.3 - wenn Sie mit der rechten Maustaste auf die Datei klicken und das Kontextmenü auswählen - drücken - ein Fenster "auf Remote drücken" geöffnet - es gibt zwei Optionen hier:

  1. origin:https://github.com/myaccount/myproject.git/

  2. https://github.com/myaccount/myproject.git/

Wie Sie sehen können, ist der Unterschied der Ursprungsparameter in der URL - Sie möchten diese Option nicht auswählen (1), Sie möchten die Option (2) aktivieren, und das funktioniert gut für mich.

Dung
quelle
2

Schritt 1: Überprüfen Sie Ihre aktuelle Konfiguration

cat .git/config

Sie erhalten:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = https://github.com/path_to_your_git.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[user]
    name = your_username
    email = your_email
[branch "master-staging"]
    remote = origin
    merge = refs/heads/master-staging

Schritt 2: Entfernen Sie Ihren Remote-Ursprung

git remote rm origin

Schritt 3: Fügen Sie den Remote-Ursprung mit Ihrem Benutzernamen und Passwort wieder hinzu

git remote add origin https://your_git_username:[email protected]/path_to_your_git.git
Haimei
quelle
Nachdem Sie den entfernten Ursprung erneut hinzugefügt haben, müssen Sie auch Ihre Zweige fern und lokal ausrichtengit branch --set-upstream master origin/master
Richard Bown
2

Wenn Git Sie bei jedem Versuch, mit GitHub zu interagieren, zur Eingabe eines Benutzernamens und eines Kennworts auffordert, verwenden Sie wahrscheinlich die HTTPS-Klon-URL für Ihr Repository.

Die Verwendung einer HTTPS-Remote-URL bietet einige Vorteile: Sie ist einfacher einzurichten als SSH und funktioniert normalerweise über strenge Firewalls und Proxys. Sie werden jedoch auch aufgefordert, jedes Mal, wenn Sie ein Repository abrufen oder verschieben, Ihre GitHub-Anmeldeinformationen einzugeben.

Sie können Git so konfigurieren, dass Ihr Passwort für Sie gespeichert wird. Für Windows :

git config --global credential.helper wincred
Emiliano Schiano
quelle
2

Unter macOS Cataline 10.15 funktionierte die Schlüsselbund-Caching-Methode bei mir nicht. Und ich wollte https://nicht verwendenssh

Folgendes hat bei mir funktioniert:

git remote rm origin

git remote add origin https://your_git_username:[email protected]/path_to_your_git.git

Dies sollte auch auf GitLab funktionieren

Stellen Sie sicher, dass der Benutzername eine E-Mail-Adresse enthält, um das @emailTeil zu entfernen. Andernfalls wird eine Fehlermeldung angezeigtURL using bad/illegal format or missing URL .

Hoffe das hilft!

ICeZer0
quelle
Dies ist die EINZIGE Lösung, die für mich funktioniert hat. Ihr_Git_Benutzername war kritisch. Es war eigentlich nicht notwendig zu setzen: your_git_password. Zu diesem Zeitpunkt würde das Kontokennwort jetzt akzeptiert, obwohl immer noch nach einer "Passphrase" gefragt wurde.
kbulgrien
1

Abhängig von Ihrer Konfiguration gibt es verschiedene Arten von Authentifizierungen. Hier sind ein paar:

  1. git credential-osxkeychain.

    Wenn Ihr Berechtigungsnachweis ungültig ist, entfernen Sie ihn durch:

      git credential-osxkeychain erase
    

    oder:

      printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
    

    Git wird Sie also nicht erneut nach der Schlüsselbund-Berechtigung fragen. Dann konfigurieren Sie es erneut.

    Siehe: Aktualisieren von Anmeldeinformationen aus dem OS X-Schlüsselbund bei GitHub

  2. Ihr SSH-RSA-Schlüssel.

    Dazu müssen Sie Ihren SSH - Schlüssel mit vergleichen , was Sie hinzugefügt haben, die Prüfung durch ssh-add -L/ ssh-add -lwenn Sie die richtige Identität verwenden.

  3. Ihre HTTPS-Authentifizierung (wenn Sie httpsanstelle des sshProtokolls verwenden).

    Verwenden Sie ~/.netrc( %HOME%/_netrcunter Windows), um Ihre Anmeldeinformationen anzugeben, z

      machine stash1.mycompany.com
      login myusername
      password mypassword
    

Weitere Informationen : Synchronisieren mit GitHub bei Stack Overflow.

Kenorb
quelle
1

Bevor Sie Ihren Schlüssel mit GitHub verwenden können, führen Sie den folgenden Schritt im Lernprogramm " Testen Ihrer SSH-Verbindung" aus :

$ ssh -T git@github.com
# Attempts to ssh to GitHub
Jonny
quelle
0

Microsoft Stack-Lösung (Windows und Azure DevOps)

Öffnen Sie zuerst die .git/configDatei, um sicherzustellen, dass die Adresse wie folgt aussieht:

protocol://something@url

Beispiel: .git / config für Azure DevOps:

[remote "origin"]
    url = https://[email protected]/mystore/myproject/
    fetch = +refs/heads/*:refs/remotes/origin/*

Wenn das Problem weiterhin besteht, öffnen Sie den Windows- Anmeldeinformations-Manager , klicken Sie auf den Safe mit dem Namen Windows-Anmeldeinformationen und entfernen Sie alle git-bezogenen Anmeldeinformationen.

Wenn Sie sich das nächste Mal bei git anmelden, wird es nicht mehr verschwinden.

Bizhan
quelle
0

Wenn Sie einen SSH-Agenten eingerichtet haben, können Sie diesen auch zu Ihrem hinzufügen ~/.gitconfig, um git zu zwingen, SSH für alle GitHub-Repos anstelle von HTTPS zu verwenden:

[url "ssh://[email protected]/"]
    insteadOf = git://github.com/
    insteadOf = https://github.com/

(Wenn Sie hauptsächlich mit öffentlichen Repos arbeiten, können Sie auch pushInsteadOfanstelle von verwenden insteadOf, da das Lesen aus einem öffentlichen Repo ohne Authentifizierung erfolgen kann.)

nyuszika7h
quelle