Como criar um repositório Git remoto a partir de um local?

Tenho um repositório local de Git. Eu gostaria de torná-lo disponível em um servidor remoto, SSH-habilitado. Como faço isto?

Author: Habeeb Perwad, 2011-07-11

6 answers

Eu acho que você faz um repositório simples no lado remoto, {[[[0]}, adiciona o lado remoto como o localizador push/pull para o seu repositório local (git remote add origin URL), e então localmente você apenas diz git push origin master. Agora qualquer outro repositório pode pull do repositório remoto.

 213
Author: Kerrek SB, 2013-09-03 09:52:57

Para configurar inicialmente qualquer servidor Git, terá de exportar um repositório existente para um novo repositório bare - um repositório que não contém um directório de trabalho. Isto é geralmente simples de fazer. Para clonar o seu repositório para criar um novo repositório bare, você executa o comando clone com a opção --bare. Por convenção, as pastas do repositório bare terminam em .git, assim como:

$ git clone --bare my_project my_project.git
Initialized empty Git repository in /opt/projects/my_project.git/

Este comando toma o repositório Git por si só, sem um trabalho diretório, e cria um diretório especificamente para ele sozinho.

Agora que você tem uma cópia do seu repositório, tudo que você precisa fazer é colocá-lo em um servidor e configurar seus protocolos. Digamos que você configurou um servidor chamado git.example.com ao qual você tem acesso SSH, e você quer armazenar todos os seus repositórios de Git sob o diretório /opt/git. Você pode configurar o seu novo repositório copiando o seu repositório em branco sobre:
$ scp -r my_project.git [email protected]:/opt/git

Neste momento, outros utilizadores que têm acesso SSH ao mesmo o servidor que tem acesso de leitura à pasta /opt/git pode clonar o seu repositório, executando

$ git clone [email protected]:/opt/git/my_project.git

Se um utilizador SSHs entrar num servidor e tiver acesso de escrita ao directório /opt/git/my_project.git, também terá acesso de push automaticamente. O Git irá adicionar automaticamente as permissões de escrita em grupo a um repositório correctamente se executar o comando git init com a opção --shared.

$ ssh [email protected]
$ cd /opt/git/my_project.git
$ git init --bare --shared

É muito fácil pegar um repositório Git, criar uma versão nua, e colocá-lo em um servidor para o qual você e seu os colaboradores têm acesso ao SSH. Agora você está pronto para colaborar no mesmo projeto.

 60
Author: Binoy Babu, 2014-01-08 04:37:53

Uma nota para as pessoas que criaram a cópia local no Windows e querem criar um repositório remoto correspondente num sistema Unix-line, onde os ficheiros de texto obtêm finais LF em outros clones por programadores em sistemas Unix-like, mas terminações CRLF no Windows.

Se criou o seu repositório do Windows antes de Configurar a tradução de fim de linha , então terá um problema. A configuração padrão do Git não é nenhuma tradução, por isso o seu conjunto de trabalho usa o CRLF, mas o seu repositório (ou seja, os dados armazenado em baixo .git) também salvou os arquivos como CRLF.

Quando você empurra para o remoto, os arquivos gravados são copiados como está, nenhuma tradução de fim de linha ocorre. (Tradução de fim de linha ocorre quando os arquivos são enviados para um repositório, não quando repositórios são empurrados). Você acaba com o CRLF em seu repositório Unix-like, que não é o que você quer.

Para obter o LF no repositório remoto, você tem que se certificar de que o LF está no repositório local primeiro, por re-normalizando as suas janelas repositório . Isto não terá nenhum efeito visível no seu conjunto de trabalho do Windows, que ainda tem terminações do CRLF, no entanto, quando você empurrar para o remoto, o remoto irá obter se correctamente.

Não tenho a certeza se há uma maneira fácil de dizer que finais de linha você tem no seu repositório do Windows - acho que você poderia testá-lo definindo core.autocrlf = falso e, em seguida, Clonagem (se o repo tem LF finais, o clone terá LF também).

 7
Author: user1804620, 2012-11-28 00:12:24

Tem de criar uma pasta num servidor remoto. Em seguida, use o comando "git init" para configurá-lo como um repositório. Isto deverá ser feito para cada projecto novo que tiver (cada pasta nova)

Assumindo que já tenha configurado e usado o git com as teclas ssh, escrevi um pequeno programa em Python, o qual, quando executado a partir de uma pasta de trabalho, irá configurar um remoto e inicializar a pasta como um repo git. Claro, você terá que editar o script (apenas uma vez) para lhe dizer servidor e localização raiz para todos repositorio.

Vê aqui - https://github.com/skbobade/ocgi

 2
Author: Sam, 2017-01-22 17:24:55

Um repositório remoto é geralmente um repositório bare - um repositório Git não tem directório de trabalho. Porque o repositório só é usado como um ponto de colaboração, não há razão para ter um instantâneo verificado no disco, são só os dados do Git. Nos termos mais simples, repositório é o conteúdo do seu projeto .pasta git e nada mais.

Você pode fazer um repositório de git com o seguinte código:

$ git clone --bare /path/to/project project.git

Uma opção para ter um repositório Git remoto está a usar o protocolo SSH:

Um protocolo de transporte comum para o Git quando a auto-hospedagem é sobre o SSH. Isto porque o acesso do SSH aos servidores já está configurado na maioria lugares - e se não for, é fácil de fazer. O SSH também é um protocolo de rede autenticado e, como é onipresente, é geralmente fácil de configurar e usar.

Para clonar um repositório Git sobre o SSH, poderá indicar um URL ssh:// assim:

$ git clone ssh://[user@]server/project.git

Ou podes use a sintaxe mais curta do tipo scp para o protocolo SSH:

$ git clone [user@]server:project.git

Em ambos os casos acima, se não indicar o nome de utilizador opcional, Git assume que o utilizador Está ligado como.

Os Prós

Os prós do uso de SSH são muitos. Em primeiro lugar, o SSH é relativamente fácil de definir up-SSH daemons são comuns, muitos administradores de rede têm experiência com eles, e muitas distribuições de SO são configuradas com eles ou têm ferramentas para geri-las. A seguir, o acesso acabou. SSH é seguro-todos os dados a transferência está encriptada e autenticada. Por último, como os HTTPS, Git e Protocolos locais, SSH é eficiente, tornando os dados tão compactos como possível antes de transferi-lo.

Os Contras

O aspecto negativo do SSH é que não suporta acesso anónimo. para o seu repositório Git. Se estás a usar o SSH, as pessoas devem ter o SSH. acesso à sua máquina, mesmo com capacidade de leitura, o que não tornar o SSH propício ao código aberto projectos para os quais as pessoas possam simplesmente quero clonar o seu repositório para examiná-lo. Se estás a usá-lo somente dentro de sua rede corporativa, o SSH pode ser o único protocolo que você temos de lidar com isso. Se quiser permitir o acesso anónimo apenas para leitura seus projetos e também quer usar o SSH, você terá que configurar o SSH para você para empurrar, mas algo mais para os outros buscar.

Para mais informações, verifique a referência: Git no servidor-os protocolos

 1
Author: Amirhossein72, 2018-04-16 15:08:14

Normalmente pode configurar um acordo de recompra git usando apenas o comando init

git init

No seu caso, já existe um repo num comando remoto disponível. Dependendo da forma como acede ao seu repo remoto (com o Utilizador dentro do url ou de uma chave ssh que lida com a verificação ) use apenas o comando clone:

git clone git@[my.url.com]:[git-repo-name].git

Também há outras formas de clonar o repo. Desta forma, você chamá-lo se você tem uma configuração de chave ssh em sua máquina que verifica ao puxar o seu repositório. Existem outros combinações do url se quiser incluir a sua senha e nome de Utilizador dentro para se autenticar no seu repositório remoto.

 -3
Author: Alex Cio, 2015-08-12 08:15:10