2010-10-08 8 views
16

Ich habe ein existierendes Git Repository auf meinem lokalen Rechner. Ich möchte dieses Repository auf meinen Webserver verschieben, dann git clone auf meinem lokalen Rechner, um mein Repository vom Server aus zu checken. Ich plane dann, auf meinem lokalen Rechner zu entwickeln und Updates auf den Server zu schieben. Ich kann von meiner lokalen Maschine zum Server ssh, aber nicht umgekehrt. Wie soll ich das machen? Ich denke, git bundle sollte irgendwie verwendet werden, obwohl, wenn ich versuchte git clone mein Bundle auf meinem Server, habe ich eine "Warnung: Remote HEAD bezieht sich auf nicht vorhandene Ref, nicht zur Kasse" Fehler. Auf meinem lokalen Computer läuft OS X, auf dem Server läuft Linux.Git: Vorhandenes Repository von PC auf Server verschieben, vom Server klonen

Antwort

29

Auf dem Linux-Server in einem neuen Verzeichnis zu tun:

git init --shared --bare 

dann auf dem lokalen Computer:

git remote add origin server:path/to/repo 
git push --all origin 

Danach wird der Server eine vollständige Kopie des Repository haben wird, und Sie werden in der Lage sein, zu und von ihm zu drücken und zu ziehen. Sie müssen keinen anderen Klon vom Server auschecken, wenn Sie bereits einen lokal haben.

+0

Wenn ich 'git push origin master' tue, bekomme ich einen langen Fehler, der mit" Total 0 (Delta 0), wieder verwendet 0 (Delta 0) remote: error: ablehnen zu aktualisieren ausgecheckt Zweig: refs/heads/Master remote: Fehler: Standardmäßig wird der aktuelle Zweig in einem Nicht-Nackt-Repository aktualisiert ". Der einzige Inhalt meiner Repos auf dem Linux-Server ist ".. .git HEAD-Zweige config description hooks info objects refs", was der 'git init --shared --bare'-Befehl ist. Ich benutze git 1.7.1.1 auf beiden Computern. –

+0

Whoop, macht nichts! Ich habe es gerade zur Arbeit gebracht. Ich hatte nicht wirklich ein neues Verzeichnis auf dem Linux-Server erstellt, ich hatte gerade den Inhalt meines Inhalts entfernt, bevor ich den Befehl 'git init ...' ausführte. Erstellen eines neuen Verzeichnisses, 'git init ...', Ändern, um diesen Ursprung aus meinen lokalen Repos zu verwenden, und dann pushen funktioniert. –

+0

Das funktioniert im Prinzip gut, aber ich brauchte ein paar zusätzliche Schritte, damit es funktioniert, weil mein Server einen nicht standardmäßigen SSH-Port ausführt: unter OS X. Ich begann mit der Installation von ssh-askpass (https://github.com/ markcarver/mac-ssh-askpass), dann musste ich den Port in ~/.ssh/config konfigurieren (siehe http://stackoverflow.com/a/5738592/217953), unter Verwendung der URL im SCP-Stil. – xgretsch

2

Wie wäre es damit:

local> cd my_repo.git 
local> git remote add origin [email protected]:/path/to/my_repo.git 
local> git config branch.master.remote origin 
local> git config branch.master.merge refs/heads/master 
local> git push origin master 

, dass die Daten von Ihrem lokalen Repo auf den Server senden. Dann folgendes tun:

local> cd .. 
local> git clone [email protected]:/path/to/my_repo.git my_repo2.git 

Dann werden Sie vom Server geklont haben. Wenn Sie damit zufrieden sind, können Sie das ursprüngliche Repo entfernen und möglicherweise das zweite umbenennen.

9

Anstelle von "git push origin master" verwenden Sie "git push --all origin", so dass Sie über alle Zweige und nicht nur den Master-Zweig bewegen.

Verwandte Themen