¿Cómo puedo insertar un repositorio de Git en una carpeta a través de SSH?

53

Tengo una carpeta llamada my-project dentro de la cual he hecho git init , git commit -a , etc.

Ahora quiero empujarlo a una carpeta vacía en / mnt / foo / bar en un servidor remoto.

¿Cómo puedo hacer esto?

Lo intenté, en base a lo que había leído:

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

que no parecía correcto (supongo que la fuente vendría antes que el destino) y falló:

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

Me gustaría que esto funcione de manera que no tenga que acceder al host remoto e iniciar manualmente un repositorio Git cada vez ... ¿tengo que hacer eso? ¿Voy por el camino correcto?

Gracias.

Rico
fuente

Respuestas:

56

El comando es correcto; sin embargo, la dirección remota también debe apuntar a un repositorio Git inicializado. Sin embargo, es un trabajo de una sola vez.

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

(En Git, un repositorio "desnudo" es uno sin un árbol de trabajo).

Gravedad
fuente
11

Si desea pasar al repositorio y hacer que los archivos se actualicen en el servidor , puede crear un enlace git del lado del servidor para verificar los archivos después de que se hayan enviado. En el directorio git del lado del servidor , /hooks/cree un archivo llamado post-receivey agregue el siguiente código (actualizando los directorios para que coincidan con la estructura de su carpeta):

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

Luego otorgue al archivo los permisos adecuados usando chmod +x post-receive

Más información y una explicación detallada aquí: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps

Kyle Chadha
fuente
2

Si no desea crear el repositorio manualmente en el servidor, puede instalar gitosis , lo que automatizará el proceso. Pero debe tener algún proceso en el servidor para crear el repositorio; no puede hacerlo a través de una conexión git ssh desde el cliente.

Mike Scott
fuente