Wie kann ich aus dem Repository eines anderen Computers in Git ziehen?

77

Zum Beispiel habe ich das Ursprungs-Repository auf zwei Computern geklont. Dann nehme ich einige Änderungen vor und verpflichte mich zum lokalen Repository von Computer A. Wie ziehe ich diese Änderungen jetzt auf Computer B? Sowohl Computer A als auch Computer B sind mit einem Netzwerk verbunden.

Was ich suche, entspricht jemandem, der manuell einen Patch erstellt und an mich sendet, den ich auf meine Arbeitskopie / mein lokales Repo anwenden kann.

Jeffreyveon
quelle
4
Meiner Meinung nach ist es kein lokales Repository, wenn es sich auf einem anderen Computer befindet:
Daher passt
… Während die Antwort von @ Amber mit den klarstellenden Details der Erzählung Ihrer Frage übereinstimmt.
RubyTuesdayDONO
1
Ich wünschte, diese Frage hätte eine Windows-Antwort
Brandon

Antworten:

109

Wenn auf den Computer, von dem Sie abrufen möchten, über sshzugegriffen werden kann, können Sie das Repository als Remote über ssh hinzufügen und dann wie bei jedem Remote- Computer von diesem Computer abrufen:

$ git remote add repo_b username@host:path/to/repository.git
$ git pull repo_b master

(Sie können den Schritt des Hinzufügens einer Fernbedienung überspringen und einfach die vollständige URL im git pullBefehl anstelle eines Remote-Namens angeben. Wenn Sie jedoch regelmäßig aus dem Repository abrufen möchten, werden Sie durch Hinzufügen als Fernbedienung gerettet viel tippen.)

Bernstein
quelle
1
Und wie wäre es mit dem Push von computer_b? Wird computer_b die Änderungen wie gewohnt weitergeben? "git push"?
Obaid Maroof
15
Für ein lokales Repo können Sie dasselbe verwenden, aber den Remote-Pfad alsfile:///local/path/to/repo/.git/
exa
2
Das funktioniert bei mir nicht, die URL muss sein /path/to/repository/.git/.
Ayberk Özgür
35

Schau es dir an git pull --help

Dies würde so etwas geben git pull /my/other/repository

Antoine Pelisse
quelle
7
Insbesondere unter dem Abschnitt GIT URLS , heißt es: „Für die lokale Repositories, auch nativ von git unterstützt die folgenden Syntaxen verwendet werden können: /path/to/repo.git/, file:///path/to/repo.git/
jemmons
11

Sie können einen tatsächlichen Server mit dem Git-Daemon einrichten . Andernfalls können Sie das Git-Bundle verwenden , das die interne Darstellung von Git in einer Datei bündelt, mit der git pullam anderen Ende entbündelt werden kann .

ZB aus den Git-Dokumenten, alles bündeln:

git bundle create file.bundle master

Am anderen Ende können Sie dann Folgendes tun:

git pull file.bundle HEAD
Matthew Flaschen
quelle
7

Wenn Sie über ssh eine Verbindung zu Computer B herstellen können, können Sie Folgendes verwenden:

git clone user@host:/path/to/repo

Es ermöglicht die Fernverfolgung über diese SSH-Verbindung und ermöglicht die Verwendung von Git Pull / Push.

Benoit Courtine
quelle
2

Ein bisschen zu spät, aber für alles, was es wert ist und um die Antwort von Antoine Pelisse zu erweitern, können Sie auch von einem SSH-Host mit demselben Repo mit ein paar weiteren Commits abrufen, ohne Ihrer Konfiguration eine Fernbedienung hinzuzufügen :

git pull user@host:/path/to/repo  # while in the local repo folder

Nur um klar zu sein - eine der möglichen Verwendungszwecke ist, wenn Sie zwei Hosts (A und B) haben, die dasselbe Repo von einer Fernbedienung geklont haben , und Sie einige Änderungen auf Host A vorgenommen haben und diese nicht auf die Fernbedienung übertragen möchten (noch), möchten aber stattdessen diese Commits von Host B abrufen. Der obige Befehl synchronisiert Ihre Repos, ohne auf Remote zu drücken .

Alex
quelle
Sie können natürlich mehrere Fernbedienungen haben. Auf Host A würde ich also zwei Fernbedienungen konfigurieren: eine mit dem Namen origin, von der aus Sie geklont haben, und eine mit dem Namen B, das Repo auf Host B
Martin Bonner unterstützt Monica
@ MartinBonner Ich weiß, dass Sie können, was in der akzeptierten Antwort klar angegeben ist. Ich sage nur, dass Sie nicht müssen. Es sieht so aus, als ob die akzeptierte Antwort seitdem aktualisiert wurde.
Alex
1
Ich finde das eigentlich unglaublich nützlich
Bart van Kuik
2

Es funktionierte für mich für ein lokales Repository mit einem anderen Computer:

git remote add origin_username [email protected]:/home/username/dev/project/main/.git/

git pull origin_username master

oder

git pull origin_username some_branch
McQuade
quelle
Sie können alle Remote-Zweigstellen auflisten mit: git ls-remote origin_username
McQuade
0

Ich habe mir ausgedacht

git clone /path/to/local/repository
Vlad T.
quelle