So seltsam es auch scheint, Sie müssen HTTPS in HTTPS übersetzen, damit es funktioniert.
[url "ssh://server/"]
insteadOf = "https://server/"
[url "https://server/"]
pushInsteadOf = "https://server/"
Frage
Ich möchte alle Klon/Ziehen erzwingen, um die Daten von SSH zu erhalten, verwenden aber weiterhin HTTPS für Push.
Mein Befehl verwendet immer HTTPS (git clone https://
) und ich kann dies nicht ändern (viele Scritps verwenden), aber ich möchte den Klon zum Verwendung von SSH zwingen und weiterhin HTTPS für den Push verwenden.
Was ich getan habe (in dieser Reihenfolge):
[url "ssh://server/"]
insteadOf = "https://server/"
[url "https://server/"]
pushInsteadOf = "ssh://server/"
Aber sowohl Abruf als auch Push werden in SSH übersetzt:
$ git remote -v
origin ssh://server/repo.git (fetch)
origin ssh://server/repo.git (push)
Und ich würde gerne so etwas sehen:
$ git clone https://server/repo.git
$ git remote -v
origin ssh://server/repo.git (fetch)
origin https://server/repo.git (push)
Lösung
So seltsam es auch scheint, Sie müssen HTTPS in HTTPS übersetzen, damit es funktioniert.
[url "ssh://server/"]
insteadOf = "https://server/"
[url "https://server/"]
pushInsteadOf = "https://server/"
Andere Tipps
Verwenden git remote set-url --push
. Aus der Dokumentation:
set-url
Changes URL remote points to. Sets first URL remote points to
matching regex <oldurl> (first URL if no <oldurl> is given)
to <newurl>. If <oldurl> doesn’t match any URL, error occurs and
nothing is changed.
With --push, push URLs are manipulated instead of fetch URLs.
With --add, instead of changing some URL, new URL is added.
With --delete, instead of changing some URL, all URLs matching
regex <url> are deleted. Trying to delete all non-push URLs is an error.