Wie kann ich ein Git-Repository über SSH in einen Ordner verschieben?

53

Ich habe einen Ordner namens my-project, in dem ich git init , git commit -a usw. ausgeführt habe.

Jetzt möchte ich es in einen leeren Ordner unter / mnt / foo / bar auf einem Remote-Server verschieben.

Wie kann ich das machen?

Ich habe versucht, basierend auf dem, was ich gelesen habe:

cd my-project
git remote add origin ssh://user@host/mnt/foo/bar/my-project.git
git push origin master

was nicht richtig schien (ich würde annehmen, dass die Quelle vor dem Ziel kommen würde) und es fehlschlug:

fatal: '/mnt/boxee/git/midwinter-physiotherapy.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Ich möchte, dass dies so funktioniert, dass ich nicht jedes Mal auf den Remote-Host zugreifen und manuell ein Git-Repository initialisieren muss. Muss ich das tun? Gehe ich überhaupt den richtigen Weg?

Vielen Dank.

Reich
quelle

Antworten:

56

Der Befehl ist korrekt. Die Remote-Adresse muss jedoch auch auf ein initialisiertes Git-Repository verweisen. Es ist jedoch ein einmaliger Job.

ssh user@host "git init --bare /mnt/foo/bar/my-project.git"

(In Git ist ein "nacktes" Repository eines ohne einen funktionierenden Baum.)

Grawity
quelle
11

Wenn Sie sowohl auf das Repository pushen als auch die Dateien auf dem Server aktualisieren möchten , können Sie einen serverseitigen Git-Hook erstellen, um die Dateien nach dem Pushen auszuchecken. Erstellen Sie im serverseitigen Git- /hooks/Verzeichnis eine Datei mit dem Namen post-receiveund fügen Sie den folgenden Code hinzu (aktualisieren Sie die Verzeichnisse entsprechend Ihrer Ordnerstruktur):

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

Geben Sie dann der Datei die entsprechenden Berechtigungen mit chmod +x post-receive

Weitere Informationen und eine ausführliche Erklärung finden Sie hier: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps

Kyle Chadha
quelle
2

Wenn Sie das Repository nicht manuell auf dem Server erstellen möchten, können Sie gitosis installieren , wodurch der Prozess automatisiert wird. Sie müssen jedoch einen Prozess auf dem Server haben, um das Repository zu erstellen - Sie können dies nicht über eine Git-SSH-Verbindung vom Client aus tun.

Mike Scott
quelle