847 Stimmen

Wie kann ich von mehreren entfernten Standorten aus einen Pull/Push durchführen?

Die Kurzfassung: Gibt es eine Möglichkeit, ein Git-Repository in eine Liste von entfernten Repos zu pushen und von dort zu beziehen (statt von einem einzigen "Ursprung")?

Die lange: Ich habe oft die Situation, dass ich eine Anwendung auf mehreren Computern mit unterschiedlichen Verbindungen entwickle - z. B. auf einem Laptop unterwegs, auf einem Computer "A", wenn ich mich an einem bestimmten Ort befinde, und auf einem anderen Computer "B" an einem anderen Ort. Außerdem kann der Laptop entweder nur mit "A" oder "B" verbunden sein, manchmal auch mit beiden.

Ich möchte, dass Git immer von allen Computern, mit denen es sich derzeit verbinden kann, "pull" und "push" macht, damit es einfacher ist, von einem Rechner zum anderen zu wechseln und nahtlos weiterzuarbeiten.

46 Stimmen

Hinweis für neue Besucher, ab 2016: Die derzeit korrekte Vorgehensweise, die von der First Class git Funktionen, ist enthalten in bösartig 's Antwort unten . Die akzeptierte Antwort ist falsch.

0 Stimmen

Ich habe die Antwort gefunden hier zur Verfügung gestellt sehr detailliert und zusammenfassend zu sein

15voto

troex Punkte 1060

Hier ist mein Beispiel mit Bash-Skript darin .gitconfig Aliasabschnitt

[alias]
        pushall = "!f(){ for i in `git remote`; do git push $i; done; };f"

14voto

Asclepius Punkte 48774
  1. Klonen Sie von der ersten URL:

    git clone git@github.com:myuser/myrepo.git

  2. Überprüfen Sie die aktuelle Fernbedienung:

    $ git remote -v origin git@github.com:myuser/myrepo.git (fetch) origin git@github.com:myuser/myrepo.git (push)

  3. Hinzufügen der zweiten Fernbedienung para origin :

    git remote set-url --add origin git@bitbucket.org:myuser/myrepo.git

  4. Stellen Sie sicher, dass beide Fernbedienungen für push :

    $ git remote -v origin git@github.com:myuser/myrepo.git (fetch) origin git@github.com:myuser/myrepo.git (push) origin git@bitbucket.org:myuser/myrepo.git (push)

    $ git config --local --get-regexp ^remote..+.url$ remote.origin.url git@github.com:myuser/myrepo.git remote.origin.url git@bitbucket.org:myuser/myrepo.git

  5. Push an alle URLs nacheinander:

    git push


So löschen Sie eine Fernbedienung:

git remote set-url --delete origin git@bitbucket.org:myuser/myrepo.git

10voto

S. Hesam Punkte 3313

Wenn Sie nach einer Möglichkeit suchen, mehrere Remote-Repositories gleichzeitig zu pushen, kennen Sie sich mit Git wahrscheinlich gut genug aus. In Git werden entfernte Repositories als Remotes bezeichnet. Das Pushen von Änderungen an Remotes ist Teil des üblichen Entwicklungszyklus.

Manchmal müssen Sie Änderungen an mehrere Remotes wie GitHub, Bitbucket usw. übertragen. Dazu können Sie die angegebenen Anweisungen befolgen.

Liste Ihrer vorhandenen Fernbedienungen

Sie können alle verfügbaren Fernbedienungen mit dem folgenden Befehl auflisten.

git remote -v

Angenommen, Sie haben noch keine (andere) Fernbedienung konfiguriert. Sie können dies tun, indem Sie die Git-Remote verwenden.

git remote add  remote_name  remote_url

Ejemplo:

git remote add github https//github.com/path/to/repo

Normalerweise werden Änderungen standardmäßig über die Adressierung des Remote-Namens durchgeführt, z. B. git push origin . Sie können mehrere Fernbedienungen zu einer Gruppe zusammenfassen und ihr einen Namen geben. So können Sie alle diese Fernbedienungen mit diesem Namen ansprechen.

Sie können mehrere Remotes hinzufügen, indem Sie die Befehle git remote oder git config verwenden oder die Konfigurationsdatei bearbeiten.

Da Git mehrere Remotes gruppieren kann, können Sie eine der folgenden Möglichkeiten nutzen, um mehrere Remotes gleichzeitig für einen Push zu konfigurieren (es müssen nicht alle sein).

Hinzufügen von Fernbedienungen mit git remote

Mit git remote können Sie mehrere Remote-URLs auf ein einziges Remote setzen.

Wenn Sie noch keine Fernbedienung mit dem Namen 'all' haben, erstellen Sie sie mit git remote add dann verwenden Sie git remote set-url –add um eine neue URL zur bestehenden Remote hinzuzufügen.

git remote add all <remote URL>

Dann

git remote set-url  -–add  all  <another remote URL>

Sie können die neu hinzugefügten Fernbedienungen mit git remote -v .

(OR)

Mehrere Fernbedienungen mit git config gruppieren

El git config wird verwendet, um Git-Parameter zu konfigurieren. Er bearbeitet die .git/config Datei als gegebene Eingabe.

git config –add remote.all.url  https//domain.com/repo.git
git config –add remote.all.url  ssh://user@host/repos/repo.git

Hinweis: Ohne die Option -add wird der Befehl die vorhandene Remote-URL ersetzen. Sie können die aktualisierte Konfiguration überprüfen unter .git/config .

(OR)

Datei bearbeiten .git/config um entfernte und mehrere entfernte URLs hinzuzufügen, wenn Sie das Konfigurationsformat kennen.

Jetzt können Sie mehrere Fernbedienungen gleichzeitig übertragen, indem Sie auf den Fernbedienungsnamen verweisen, dem mehrere Fernbedienungs-URLs zugewiesen sind.

git push all master

Sie können immer an mehrere entfernte Repositorys pushen, ohne sie mit der formalen Bash-Syntax zu gruppieren.

git push server master && git push github master

8voto

dstineback Punkte 103

Ich habe zwei separate pushurl für den entfernten "origin" in der .git congfig-Datei hinzugefügt. Wenn ich git push origin "branchName" Dann wird es durchlaufen und zu jeder Url pushen. Nicht sicher, ob es einen einfacheren Weg, dies zu erreichen, aber dies funktioniert für mich zu Github-Quellcode und My.visualStudio-Quellcode zur gleichen Zeit zu schieben.

[remote "origin"]
  url = "Main Repo URL"
  fetch = +refs/heads/*:refs/remotes/origin/*
  pushurl = "repo1 URL"
  pushurl = "reop2 URl"

6voto

Joe Healy Punkte 5599

Ich wollte in VSO/TFS arbeiten und dann öffentlich auf GitHub veröffentlichen, wenn ich fertig bin. Das erste Repository wurde in einem privaten VSO erstellt. Als es an der Zeit war, es zu GitHub hinzuzufügen, tat ich das:

git remote add mygithubrepo https://github.com/jhealy/kinect2.git
git push -f mygithubrepo master

Funktionierte wie ein Champion...

Zur Überprüfung können Sie mit "git remote -v" eine Liste der mit einem Projekt verbundenen Repositories erstellen.

C:\dev\kinect\vso-repo-k2work\FaceNSkinWPF>git remote -v
githubrepo      https://github.com/jhealy/kinect2.git (fetch)
githubrepo      https://github.com/jhealy/kinect2.git (push)
origin  https://devfish.visualstudio.com/DefaultCollection/_git/Kinect2Work (fetch)
origin  https://devfish.visualstudio.com/DefaultCollection/_git/Kinect2Work (push)

Einfacher Weg, hat bei mir funktioniert... Hoffentlich hilft das jemandem.

5 Stimmen

Laufen git push -f ohne Grund, z.B. Ausfall von git push oder genau zu wissen, was man tut, ist eine schlechte Idee und potenziell schädlich. Das beantwortet auch nicht die Frage, wie man eine zweite Fernbedienung hinzufügen kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X