2010-05-11 8 views
38

Auf einer Maschine (IP-Adresse 192.168.1.2), erstelle ich ein Repository Git vonWie kann ich von einer anderen Maschine "klonen"?

$ cd /home/hap/working 
$ git init 
$ (add some files) 
$ git add . 
$ git commit -m 'Initial commit' 

Und ich habe eine andere Maschine auf dem gleichen Wi-Fi-Netzwerk. Wie kann ich von der anderen Maschine klonen?

Antwort

64

Sie benötigen URL ein Git + ssh verwenden, um die Git Klonen auszuführen:

git clone git+ssh://[email protected]/~/working 

es zu brechen:

  • git+ssh Git sagt, dass Sie die verwenden möchten ssh verbinden Git-Repository.
  • hap ist Ihr Benutzername (ich nehme an, basierend auf dem Home-Verzeichnis in Ihrer Frage).
  • 192.168.1.2 die Maschine, die Sie
  • ~/working verbinden wollen, ist der Weg, auf dem Remote-Computer zu Ihrem Git Repository (so ~ Ihr Home-Verzeichnis ist)

Einige andere Dinge zu beachten:

  • Sie benötigen einen sSH-Server auf dem Rechner mit der Git-Repository
  • Sie müssen das Passwort für den Benutzer aktiviert haben werden wissen, hap
+6

Ich glaube nicht, dass 'git + ssh: //' benötigt wird. Sie sollten einfach '[email protected]: ~/working' verwenden können. Wenn Sie direkt aus einem Arbeitsverzeichnis klonen, wird der Klon in diesen Arbeits-Repo verschoben, was vermieden werden sollte. – bames53

+2

Dies kann z. B. nützlich sein, wenn Sie an Maschine X arbeiten, die nicht auf Remote-Repo zugreifen kann, aber auf einen anderen lokalen Computer zugreifen kann, der Zugriff auf Remote hat. In meinem Fall benutze ich dies, wo ich auf einem Linux-Rechner ohne Zugriff auf den vpn entwickle, der benötigt wird, um direkt zur Fernbedienung zu gehen. –

+0

Ist es so einfach, mit einem Zertifikat zu klonen? –

2

Ich nehme an, dass Sie auf beiden Maschinen Git installiert haben.

Nun, was Sie tun, hängt davon ab, welche Dienste Sie installiert haben, dh wie Sie von einem Computer mit dem anderen verbinden können.

Der einfachste Fall ist, wenn man sshd läuft auf der Maschine haben Sie von zu klonen, und Sie können aus der Maschine, die Sie wollen ssh - an die Maschine, die Sie von klonen möchten klonen.

Wenn Sie

tun
ssh 192.168.1.2 

(oder, wenn Sie auf der anderen Maschine anderen Benutzernamen haben, ssh [email protected]), dann sollten Sie in der Lage sein, über SSH zu klonen, wie Josiah wrote:

git clone git+ssh://[email protected]/~/working 

Wenn Sie weiterhin zwischen Computern hin- und herwechseln möchten, sollten Sie die Authentifizierung mit öffentlichen Schlüsseln für SSH konfigurieren, damit Sie nicht bei jedem Abruf ein Kennwort angeben müssen.


Wenn Sie nicht sshd auf der Quellmaschine installiert haben, können Sie klonen „smart“ HTTP-Protokoll verwenden, wenn Sie einen Web-Server installiert und kann von CGI-Skripten (siehe git-http-backend manpage) installieren, oder Sie können Klonen Sie mit "dumm" HTTP-Protokoll, wenn Sie Web-Server installiert haben, kann aber nur statische Dateien liefern (Sie müssten zuerst git update-server-info im Quell-Repository ausführen), oder Sie können klonen mit rsync, wenn Sie es installiert haben.

Als letzten Ausweg können Sie "git bundle" verwenden, um ein Archiv zu erstellen, das Sie beispielsweise mit einem USB-Stick verschieben und daraus kopieren können.

0

Ich denke, dass Leute nach dieser Antwort suchen. Der folgende Befehl im Terminal meldet sich beim Server an und klont einen vorhandenen Repo. In der aktuellen Pfad-Position des Terminals (so cd an der bevorzugten Stelle zuerst).

sudo git clone [email protected]:/home/path/to/repo.git 

Wenn Sie jetzt nicht die IP-Adresse. Verwenden Sie ping, um die IP Ihres Servers zu bestimmen. Nach der IP-Adresse vergessen Sie nicht, verwenden Sie eine : und schreiben Sie dann den absoluten Pfad.

+0

Warum 'sudo', warum Server? Op speziell zwischen zwei Systemen in einem Netzwerk gefragt, angeblich um Bandbreite zu sparen ... das beantwortet die Frage überhaupt nicht und ist einfach falsch. – thecarpy

+0

@thecarpy Sie haben Recht, wenn ich es wieder lese es hat wenig mit der genauen Frage zu tun. – Michiel

+0

Klonen Sie nicht als root (mit 'sudo'), alle Dateien in git gehören zu root ... – thecarpy

Verwandte Themen