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)
War es hilfreich?

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.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top