Ziehen von http, um die Authentifizierung zu umgehen (daher muss ich kein Passwort eingeben, wenn ich ssh.keygen nicht verwende).
Pushen durch ssh mit Authentifizierung.
Tsung.W
Ziehen von http, um die Authentifizierung zu umgehen (daher muss ich kein Passwort eingeben, wenn ich ssh.keygen nicht verwende).
Pushen durch ssh mit Authentifizierung.
Von dem git-config
Manpage:
remote.<name>.url
Die URL eines Remote-Repositorys. Siehe git-fetch(1) oder git-push(1).
remote.<name>.pushurl
Die Push-URL eines Remote-Repositorys. Siehe git-push(1).
Versuchen Sie, Ersteres auf an zu setzen http:
url und letztere zu a git+ssh:
(oder nur git:
) URL?
Danke!! Bearbeiten Sie einfach die .git/config-Datei und ändern Sie sie wie folgt: [remote “origin”] fetch = +refs/heads/*:refs/remotes/origin/* url = git.yoursite.com/your_project.git pushurl = [email protected]:/home/git/repositories/your_project.git
– Tsung.W
24. August 2010 um 7:47 Uhr
@Amber – Können Sie ein Beispiel dafür geben? Ich folge Tsungs Beispiel in den Kommentaren nicht ganz.
– jww
18. November 2017 um 17:50 Uhr
@jww Ich habe ein Beispiel mit dem genauen Befehl git config und dem resultierenden Ergebnis der git-Konfiguration hinzugefügt.
– VonC
4. August 2018 um 17:11 Uhr
VonC
Ursprüngliche Antwort, z push durch ssh in einem ‘remote’: Dies gilt nur für eines repo, das aktuelle:
Wenn Sie eine haben git remote -v
die eine https-URL für ” zurückgibtorigin
“, du kannst Tippen:
git config remote.origin.pushurl [email protected]:aUser/aRepo
Oder eher:
git remote set-url --push [email protected]:aUSer/aRepo
Wie hier vermerkt:
Es ist nicht funktionell anders, als
set-url
intern endet nur der Aufruf von config. Aberset-url
wird sich beschweren, wenn Sie den Befehlsteil falsch eingeben “git remote set-url --push
“, während git config falsch eingegebene Optionen stillschweigend akzeptiert, aber die URL der Fernbedienung nicht tatsächlich festlegt.
Sehen git-Referenz (hier angepasst):
$ git remote -v
origin https://github.com/schacon/git-reference.git (fetch)
origin https://github.com/schacon/git-reference.git (push)
$ git remote set-url --push origin [email protected]:schacon/git-reference.git
$ git remote -v
origin https://github.com/schacon/git-reference.git (fetch)
origin [email protected]:schacon/git-reference.git (push)
Im Zusammenhang mit dem Kopfgeld fügt jww hinzu:
Ich möchte, dass dies für alle github.com gilt und nicht nur für meine Repos
Dann git remote
ist nicht die Antwort.
Nur url.<base>.pushInsteadOf
gelten würde alle Repos:
Jede URL, die mit diesem Wert beginnt, wird nicht gepusht; Stattdessen wird es neu geschrieben, sodass es mit beginnt, und die resultierende URL wird an gepusht. ich
So:
git config --global url."[email protected]:".pushInsteadOf https://github.com/
# or
git config --global url."ssh://[email protected]/".pushInsteadOf https://github.com/
Ich habe diese Option 2014 in „Git: How to get the public, read-only git:// URL“ erwähnt.
Das --global
Option wird das angewandt auf machen alle Repos, nicht nur das aktuelle.
Aus Jridgewells Kommentar und Kern:
Um immer von HTTPS zu pullen und immer über SSH zu pushen, funktioniert Folgendes:
git config --global url."https://github.com/".insteadOf [email protected]:
git config --global url."[email protected]:".pushInsteadOf https://github.com/
git config --global url."[email protected]:".pushInsteadOf [email protected]:
Dies nutzt insteadOf
um SSH für Pulls in HTTPS umzuschreiben. Es verwendet auch pushInsteadOf
(der erste), um HTTPS für Pushs in SSH umzuschreiben. Und es verwendet a pushInsteadOf
(die zweite), um sicherzustellen, dass SSH für Pushs verwendet wird, wenn die ursprüngliche Remote-URL SSH war.
Der Zweite pushInsteadOf
ist wichtig.
Git verwendet die erste geschriebene Push-URL und sie gilt pushInsteadOf
Vor insteadOf
.
Durch Umschreiben eines Originals [email protected]:
zu [email protected]:
wir verhindern die insteadOf
vom Umschreiben von SSH zu HTTPS für Pushs.
Danke @VonC. In meinem Fall möchte ich, dass alle GitHub-Pushs mit SSH und alle Pulls mit HTTPS erfolgen. Alles andere sollte HTTPS für Pull und Push verwenden. Hier ist meine gitconfig. Wenn ich versuche hinzuzufügen [pull https://github.com]
es verwendet immer noch SSH für den Pull. Anderes Twiddeln scheint Git einfach kaputt zu machen. ich habe das url/InsteadOf
von einem anderen Stack Overflow Q&A vor einiger Zeit, konnten es aber nicht auf HTTPS-Pull und SSH-Push erweitern.
– jww
4. August 2018 um 21:31 Uhr
@jww Entfernen Sie zuerst das Statt: das wird klarer
– VonC
4. August 2018 um 21:39 Uhr
@jww Zweitens versuchen Sie, das Repo als https zu klonen, und verwenden Sie es dann git remote set-url --push [email protected]:aUSer/aRepo
innerhalb des lokalen Klons.
– VonC
4. August 2018 um 21:39 Uhr
Danke @VonC. Können Sie mir eine funktionierende Gitconfig zeigen, die dies bewerkstelligt? Es ist schmerzhaft für mich, mit der Git-Befehlszeile zu arbeiten. Es ist viel einfacher, eine Gitconfig zu kopieren/einzufügen.
– jww
4. August 2018 um 21:56 Uhr
@jww Es ist weniger riskant, den Befehl einzugeben. Einfach kopieren und einfügen git remote set-url --push origin [email protected]:yourUser/yourRepo.git
und du bist fertig.
– VonC
4. August 2018 um 22:48 Uhr
mögliches Duplikat von Diferent default remote für git pull und git push
– Josh Lee
24. August 2010 um 3:04 Uhr
Der Titel dieser Frage ist gut für jemanden, der nicht daran denkt, den Begriff “Standard” zu verwenden.
– Joey Adams
24. August 2010 um 3:08 Uhr
@jww: Richtig, ich glaube, das meinte ich vor 7 Jahren. Der Titel ist so formuliert, dass diese Frage leichter zu finden ist als das vorgeschlagene Duplikat.
– Joey Adams
22. November 2017 um 4:30 Uhr