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.

Jacob
quelle

Antworten:

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

Beispiel:

git remote add origin [email protected]: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).

Hobbs
quelle
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. [email protected]) 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
Grant Limberg
quelle
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.

Greg Hewgill
quelle
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
jazzed
quelle
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>
Cesar
quelle