Come posso inviare un repository Git in una cartella su SSH?


53

Ho una cartella chiamata my-project all'interno della quale ho eseguito git init , git commit -a , ecc.

Ora voglio spingerlo in una cartella vuota in / mnt / foo / bar su un server remoto.

Come posso fare questo?

Ho provato, in base a ciò che avevo letto:

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

che non sembrava giusto (suppongo che la fonte sarebbe arrivata prima della destinazione) e non è riuscita:

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

Mi piacerebbe che funzionasse in modo tale da non dover accedere all'host remoto e avviare manualmente un repository Git ogni volta ... devo farlo? Sto percorrendo la strada giusta per niente?

Grazie.

Risposte:


56

Il comando è corretto; tuttavia, l'indirizzo remoto deve puntare anche a un repository Git inizializzato. È un lavoro una tantum, però.

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

(In Git, un repository "nudo" è uno senza un albero funzionante.)


11

Se si desidera eseguire sia il push sul repository sia l'aggiornamento dei file sul server , è possibile creare un hook git sul lato server per effettuare il checkout dei file dopo che sono stati inviati. Nella directory git lato server/hooks/ creare un file denominato post-receivee aggiungere il codice seguente (aggiornando le directory in modo che corrispondano alla struttura della cartella):

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

Quindi assegnare al file le autorizzazioni appropriate utilizzando chmod +x post-receive

Maggiori informazioni e una spiegazione dettagliata qui: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps


2

Se non si desidera creare manualmente il repository sul server, è possibile installare gitosis , che automatizzerà il processo. Ma devi creare un processo sul server per creare il repository - non puoi farlo tramite una connessione git ssh dal client.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.