Git push / clone para novo servidor

127

Estou apenas aprendendo Git e há algo que não consigo resolver. Depois de criar e usar um repositório git localmente no meu Mac, posso enviar uma cópia para outro servidor em outro lugar? Estou atrás de um firewall e, infelizmente, não posso correr git cloneda outra máquina.

Jacob
fonte

Respostas:

137
  1. git remote add url de nome
  2. git push ramo de nome

Exemplo:

git remote add origin [email protected]:foo/bar.git
git push origin master

Consulte os documentos para git push- você pode definir um controle remoto como o controle remoto padrão para uma determinada ramificação; caso contrário, o nome originé especial. Só git pushpor si só, fazer o mesmo que git push origin thisbranch (por qualquer ramo você está no).

hobbs
fonte
7
Para um efeito mais próximo como uma "clonagem push", em vez de apenas pressionar um _branch_ : git push -u --allpodemos omitir origin, pois é o nome assumido padrão para push e -utambém rastreará as ramificações remotas.
Cregox 02/12/19
13
Deve ser o suficiente para criar um repositório vazio vazio no servidor usando git init --bare /foo/bar.gite, em seguida, envie o seu local para lá (como nesta resposta). Você não precisa transferir nada com zipado / tarado para o servidor.
OderWat
1
Destacando OderWat. Por exemplo, faça o 'git init --bare foo / bar.git' enquanto estiver conectado ao controle remoto (ou seja, [email protected]), então a 'origem remota' terá um destino para o qual empurrar. Para o exemplo do github, acho que você poderia usar a interface da web Repositório / Adicionar do github e seguir o conselho "Enviar um repositório existente a partir da linha de comando". O Github aconselha um '-u' a causar uma referência de rastreamento.
Dave X
Esse método pode ser canônico, mas é obtuso e torna o git menos utilizável. Eu adoraria ter git, mas bons céus ele tem alguns problemas de interface do usuário ..
Ross Rogers
Tomei a liberdade de remover o parágrafo "EDIT" que foi adicionado à pergunta original, que fazia parecer que esse procedimento era questionável. Eu não acho que é, e provavelmente deveria ter sido um comentário em vez de uma edição de pergunta de qualquer maneira.
August Lilleaas
75

O que você pode querer fazer é primeiro, na sua máquina local, criar um clone do repositório

git clone --bare /path/to/repo /path/to/bare/repo.git  # don't forget the .git!

Agora, arquive o novo diretório repo.git usando tar / gzip ou qualquer que seja sua ferramenta de arquivamento favorita e copie o arquivo no servidor.

Desarquivar o repositório no seu servidor. Você precisará configurar um controle remoto no seu repositório local:

git remote add repo-name user@host:/path/to/repo.git #this assumes you're using SSH

Você poderá pressionar e retirar do repositório remoto com:

git push repo-name branch-name
git pull repo-name branch-name
Grant Limberg
fonte
4
Você poderia explicar o comentário "não esqueça o .git!"? Onde está o ponto de adicionar .git ao final da pasta? Quando devo fazer isso? Apenas uma convenção?
Lumbric
5
O ".git" é apenas o padrão oficial para a identificação de um repositório git bare
Grant Limberg
3
Eu não estou seguindo esta idéia ... isso não quebra o propósito de configurar um servidor git e realmente usá-lo para "transferir / copiar / manter as coisas em sincronização / backup" em vez de compactar e usar outro método?
precisa saber é
1
Era exatamente isso que eu precisava, porque o repositório original estava em uma rede que não tinha acesso à rede em que o servidor que eu queria enviar por push existia. Isso me permitiu colocar o repositório em uma caixa que tinha acesso.
22612 michaeltwofish
3
@ Como você só precisa zipar manualmente / copiar / extrair o repositório uma vez. Depois disso, tudo o que você precisa é empurrar e puxar o git.
sparebytes 18/10/12
9

Existem muitas maneiras de mover repositórios, git bundleé uma boa maneira se você tiver disponibilidade de rede insuficiente. Como um repositório Git é realmente apenas um diretório cheio de arquivos, você pode "clonar" um repositório fazendo uma cópia do .gitdiretório da maneira que melhor lhe convier.

A maneira mais eficiente é usar um repositório externo em algum lugar (use o GitHub ou configure o Gitosis ) e depois git push.

Greg Hewgill
fonte
7
remote server> cd /home/ec2-user
remote server> git init --bare --shared  test
add ssh pub key to remote server
local> git remote add aws ssh://ec2-user@<hostorip>:/home/ec2-user/dev/test
local> git push aws master
animado
fonte
Gosto da simplicidade da sua resposta, mas não tenho certeza se é disso que preciso ou não. Eu tenho um repositório GIT existente no GitHub e agora também quero enviar para os arquivos ao vivo nosso servidor Ubuntu (que possui o GIT instalado). Você pode adicionar alguns comentários para tornar o processo mais claro?
Dave Everitt
1

Você pode enviar uma ramificação para um servidor remoto, por exemplo, github . Você primeiro teria que fazer a configuração inicial do projeto, depois cloná-lo e:

git push <remote repo> <your branch>
Cesar
fonte