Como posso enviar um repositório Git para uma pasta através do SSH?

49

Eu tenho uma pasta chamada my-project dentro da qual eu 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 suponho 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

Eu gostaria que isso funcionasse de tal forma que eu não tenha que acessar o host remoto e manualmente iniciar um repositório Git toda vez ... eu tenho que fazer isso? Estou indo pelo caminho certo?

Obrigado.

    
por rich 08.01.2011 / 19:39

3 respostas

52

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" é um sem uma árvore de trabalho.)

    
por 08.01.2011 / 21:02
9

Se você quer tanto empurrar para o repositório e fazer com que os arquivos sejam atualizados no servidor , você pode criar um gancho git do lado do servidor para verificar os arquivos depois que eles forem enviados. No lado do servidor git /hooks/ directory, crie um arquivo chamado post-receive e adicione o seguinte código (atualizando os diretórios para que correspondam à sua estrutura de pastas):

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

Em seguida, forneça as permissões apropriadas do arquivo usando chmod +x post-receive

Mais informações & uma explicação detalhada aqui: link

    
por 08.01.2015 / 20:20
1

Se você não quiser criar o repositório manualmente no servidor, você pode instalar gitosis , que irá automatizar o processo. Mas você tem que 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.

    
por 08.01.2011 / 20:09

Tags