Como posso enviar um repositório Git para uma pasta sobre SSH?

53

Eu tenho uma pasta chamada my-project dentro da qual fiz git init , git commit -a , etc.

Agora, quero enviá-lo para uma pasta vazia em / mnt / foo / bar em um servidor remoto.

Como posso fazer isso?

Eu tentei, com base no que li:

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

que não parecia certo (eu diria que a fonte viria antes do destino) e falhou:

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

Gostaria que isso funcionasse de forma que não fosse necessário acessar o host remoto e iniciar manualmente um repositório Git toda vez ... tenho que fazer isso? Estou seguindo o caminho certo?

Obrigado.

rico
fonte

Respostas:

56

O comando está correto; no entanto, o endereço remoto também deve apontar para um repositório Git inicializado. É um trabalho único, no entanto.

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

(No Git, um repositório "vazio" é aquele sem uma árvore de trabalho.)

gravidade
fonte
11

Se você deseja enviar por push para o repositório e atualizar os arquivos no servidor , é possível criar um gancho git do lado do servidor para fazer check-out dos arquivos depois que eles foram enviados. No diretório git do lado do servidor , /hooks/crie um arquivo nomeado post-receivee adicione o seguinte código (atualizando os diretórios para corresponder à sua estrutura de pastas):

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

Em seguida, dê ao arquivo as permissões adequadas usando chmod +x post-receive

Mais informações e uma explicação detalhada aqui: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps

Kyle Chadha
fonte
2

Se você não quiser criar o repositório manualmente no servidor, poderá instalar gitosis , o que automatizará o processo. Mas você precisa ter algum processo no servidor para criar o repositório - você não pode fazê-lo através de uma conexão git ssh do cliente.

Mike Scott
fonte