Git Push / Clone auf neuen Server


127

Ich lerne gerade Git und es gibt etwas, das ich nicht herausfinden kann. Kann ich nach dem lokalen Erstellen und Verwenden eines Git-Repositorys auf meinem Mac eine Kopie auf einen anderen Server übertragen? Ich bin hinter einer Firewall und kann leider nicht git clonevom anderen Computer ausgeführt werden.

Antworten:


137
  1. git remote add Name URL
  2. git push Name Zweig

Beispiel:

git remote add origin git@github.com:foo/bar.git
git push origin master

In den Dokumenten finden git pushSie Informationen dazu : Sie können eine Fernbedienung als Standardfernbedienung für einen bestimmten Zweig festlegen. Wenn Sie dies nicht tun, ist der Name etwas originBesonderes. Nur git pushalleine macht das Gleiche wie diese git push origin Branche (für jeden Zweig, in dem Sie tätig sind).


7
Für einen näheren Effekt als "Push-Klonen" anstatt nur ein _branch_ zu pushen : git push -u --allWir können weglassen, originda dies der standardmäßig angenommene Name für das Pushen ist und -uauch die Remote-Zweige verfolgt.
Cregox

13
Es sollte ausreichen, ein leeres nacktes Repository auf dem Server zu erstellen git init --bare /foo/bar.gitund dann Ihr lokales Repository dort zu verschieben (wie in dieser Antwort). Sie müssen nichts mit ZIP / Tared auf den Server übertragen.
OderWat

1
Seconding OderWat. Führen Sie für das Beispiel "git init --bare foo / bar.git" aus, während Sie an der Fernbedienung (z. B. git@github.com) angemeldet sind. Dann hat der "entfernte Ursprung" ein Ziel, in das er pushen kann. Für das Github-Beispiel könnten Sie die Repository / Add-Weboberfläche von Github verwenden und dann den darin enthaltenen Ratschlägen "Vorhandenes Repository über die Befehlszeile verschieben" folgen. Github rät einem '-u', eine Verfolgungsreferenz zu erstellen.
Dave X

Diese Methode mag kanonisch sein, ist aber stumpf und macht Git weniger nutzbar. Ich liebe mich ein bisschen git, aber mein Gott hat es einige UI-Probleme ..
Ross Rogers

Ich habe mir erlaubt, den Absatz "BEARBEITEN" zu entfernen, der der ursprünglichen Frage hinzugefügt wurde, sodass es so aussah, als wäre dieses Verfahren fraglich. Ich glaube nicht, dass es so ist, und es hätte wahrscheinlich sowieso ein Kommentar statt einer Frage sein sollen.
August Lilleaas

75

Möglicherweise möchten Sie zunächst auf Ihrem lokalen Computer einen nackten Klon des Repositorys erstellen

git clone --bare /path/to/repo /path/to/bare/repo.git  # don't forget the .git!

Archivieren Sie nun das neue repo.git-Verzeichnis mit tar / gzip oder einem anderen Ihrer bevorzugten Archivierungswerkzeuge und kopieren Sie das Archiv auf den Server.

Deaktivieren Sie das Repo auf Ihrem Server. Anschließend müssen Sie eine Fernbedienung in Ihrem lokalen Repository einrichten:

git remote add repo-name user@host:/path/to/repo.git #this assumes you're using SSH

Sie können dann auf das Remote-Repo drücken und daraus ziehen mit:

git push repo-name branch-name
git pull repo-name branch-name

4
Könnten Sie den Kommentar "Vergiss die .git nicht!" Erklären? Wo ist der Punkt beim Hinzufügen von .git zum Ende des Ordners? Wann soll ich das machen Nur eine Konvention?
Lumbric

5
Die ".git" ist nur der inoffizielle Standard für die Identifizierung eines Bare-Git-Repo
Grant Limberg

3
Ich verfolge diese Idee nicht ... nicht dieser Bruch des ganze Zweck der einen Git - Server einrichten und tatsächlich verwendet es auf „Übertragung / Kopieren / die Dinge synchron / backup“ , anstatt zu zippen und eine andere Methode?
Cregox

1
Dies ist genau das, was ich brauchte, da sich das ursprüngliche Repo in einem Netzwerk befand, das keinen Zugriff auf das Netzwerk hatte, auf das der Server, auf den ich pushen wollte, existierte. Dadurch konnte ich das Repo auf eine Box legen, die Zugriff hatte.
Michaeltwofish

3
@Cawas Sie müssen das Repo nur einmal manuell komprimieren / kopieren / extrahieren. Danach brauchen Sie nur noch zu drücken und zu ziehen.
Ersatzbytes

9

Es gibt viele Möglichkeiten, Repositorys zu verschieben. Dies git bundleist eine gute Möglichkeit, wenn Sie nicht über ausreichende Netzwerkverfügbarkeit verfügen. Da ein Git-Repository eigentlich nur ein Verzeichnis voller Dateien ist, können Sie ein Repository "klonen", indem Sie eine Kopie des .gitVerzeichnisses erstellen, wie es Ihnen am besten gefällt.

Am effizientesten ist es, irgendwo ein externes Repository zu verwenden ( GitHub verwenden oder Gitosis einrichten ) und dann git push.


7
remote server> cd /home/ec2-user
remote server> git init --bare --shared  test
add ssh pub key to remote server
local> git remote add aws ssh://ec2-user@<hostorip>:/home/ec2-user/dev/test
local> git push aws master

Ich mag die Einfachheit Ihrer Antwort, bin mir aber nicht sicher, ob es das ist, was ich brauche oder nicht. Ich habe ein vorhandenes GIT-Repo auf GitHub und möchte jetzt auch unseren Ubuntu-Server (auf dem GIT installiert ist) auf die Live-Dateien übertragen. Können Sie einige Kommentare hinzufügen, um den Prozess klarer zu gestalten?
Dave Everitt

1

Sie können einen Zweig an einen Remote-Server senden, z . B. Github . Sie müssten zuerst die anfängliche Projekteinrichtung durchführen, dann Ihr Projekt klonen und:

git push <remote repo> <your branch>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.