Eu tenho um projeto no qual criei um repositório git:
$ cd myproject
$ git init
$ git add .
$ git commit
Eu queria criar um clone nu em outra máquina:
$ cd ..
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Eu executei o clone, mas não imprimi nenhuma resposta. Entrei na máquina do servidor e tentei ver como os arquivos são armazenados. O caminho / GitRepos estava vazio, então decidi fazer o clone novamente:
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Desta vez, a resposta foi:
fatal: caminho de destino 'ssh: // usuário @ servidor: /GitRepos/myproject.git' já existe e não é um diretório vazio.
Mas vi que o caminho estava vazio.
O que está acontecendo aqui ?
git clone --bare
fará o que você pensa que fará.Respostas:
Isso possivelmente não está diretamente relacionado à questão; mas um erro que acabei de cometer, e vejo no OP, é a especificação da URL
ssh://user@server:/GitRepos/myproject.git
- ou seja, você tem dois pontos:
e uma barra/
depois que significa um caminho absoluto.Encontrei o clone do Git, ssh: não foi possível resolver o nome do host - git, development - Nicolas Kuttler (como era o erro que eu estava recebendo, na
git
versão 1.7.9.5), observando:... o que também era meu problema! Então, basicamente em
git
comssh
, você quer usossh://[email protected]/absolute/path/to/repo.git/
- apenas uma barra para o caminho absoluto no servidor[email protected]:relative/path/to/repo.git/
- apenas dois pontos (não deve ter ossh://
caminho relativo no servidor (em relação ao diretório inicial dausername
máquina do servidor)Espero que isso ajude alguém,
Saúde!
fonte
ssh://
prefixo. Passei apenas 20 minutos tentando descobrir isso.git clone [email protected]:relative/path/to/repo.git/
Deveria trabalhar.Para repositórios no GitHub, tente:
Para configurar o git para clonar via ssh, consulte:
Gerando chaves SSH e adicione sua chave gerada em Configurações da conta -> Chaves SSH
Clonando com SSH
fonte
Você precisa executar o comando clone no que está chamando de servidor. Mas aposto que você não está executando um servidor ssh no seu cliente local, para que não funcione de qualquer maneira. Sugira que você siga esta abordagem (verifique o manual porque estou fazendo isso de memória)
git init --bare
git remote add origin ssh://user@server:/GitRepos/myproject.git
Seguido porgit push origin master
fonte
Isenção de responsabilidade: Esta é apenas uma cópia de um comentário de bobbaluba tornado mais visível para futuros visitantes. Isso me ajudou mais do que qualquer outra resposta.
Você deve soltar o
ssh://
prefixo ao usargit clone
como exemplofonte
tente isso.
Passo 1:
Passo 2:
(usando a tecla Enter para o valor padrão) Etapa 3: Para configurar o arquivo de configuração
Passo 4:
Etapa 5:
Quando você terminar a Etapa 4
1. o arquivo test2.git será baixado
2. você obterá o novo arquivo (hos_conhecidos) no diretório ~ / .ssh
PS: Eu crio o id_rsa e o id_rsa.ub automaticamente e entrego-o ao servidor Gitlab. usando as duas chaves para qualquer lado do cliente (Windows e Linux).
fonte
Git 101:
git
é um sistema de controle de versão descentralizado. Você não precisa de um servidor para instalar o git. Ainda assim, você pode querer fazer isso como parece legal, certo? (Também é útil se você deseja trabalhar em um único projeto a partir de vários computadores.)Portanto, para executar um "servidor", você precisa executar,
git init --bare <your_project>.git
pois isso criará um repositório vazio, que poderá ser importado em suas máquinas sem ter que mexer nos arquivos de configuração em seu.git
diretório.Depois disso, você poderá clonar o repositório em seus clientes como ele deve funcionar, mas descobri que alguns clientes (a saber
git-gui
) não conseguirão clonar um repositório que esteja completamente vazio. Para contornar isso, você precisa executarcd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master
. (Observe que você pode precisar configurar seu nome de usuário e e-mail para o git dessa máquina, se não o tivesse feito no passado. Os comandos a serem executados estarão na mensagem de erro que você recebe, então eu os omitirei.)Portanto, neste ponto, você pode clonar o repositório para qualquer máquina simplesmente executando
git clone <user>@<server>:<relative_path><your_project>.git
. (Como outros já indicaram, pode ser necessário prefixá-lossh://
se você usar o caminho absoluto.) Isso pressupõe que você já pode efetuar login do seu cliente no servidor. (Você também receberá pontos de bônus por configurar um arquivo de configuração e chavesssh
, se pretender enviar muitas coisas para o servidor remoto.)Alguns links relevantes:
isso indica o que você precisa saber.
E isso é para aqueles que conhecem o funcionamento básico do git, mas às vezes esquecem a sintaxe exata.
fonte
Quero tentar uma resposta que inclua git-flow e três 'pontos' ou casos de uso, o repositório central do git, o desenvolvimento local e a máquina de produção. Isso não está bem testado .
Estou dando comandos incrivelmente específicos. Em vez de dizer
<your folder>
, eu direi/root/git
. O único lugar em que estou alterando o comando original é substituir o meu nome de servidor específicoexample.com
. Explicarei a finalidade das pastas para que você possa ajustá-las adequadamente. Informe-me de qualquer confusão e atualizarei a resposta.A versão git no servidor é 1.7.1. O servidor é o CentOS 6.3 (Final).
A versão git na máquina de desenvolvimento é 1.8.1.1. Este é o Mac OS X 10.8.4.
O repositório central e a máquina de produção estão na mesma máquina.
o repositório central, ao qual os usuários do svn podem se relacionar como 'servidor' é configurado da seguinte maneira. Eu tenho uma pasta
/root/git
onde guardo todos os meus repositórios git. Quero criar um repositório git para um projeto que chamo de 'flores'.O comando git deu duas mensagens:
Nada para se preocupar.
Na máquina de desenvolvimento está configurado da seguinte maneira. Eu tenho uma pasta
/home/kinjal/Sites
onde eu coloco todos os meus projetos. Agora eu quero obter o repositório central do git.Isso me leva a um ponto em que posso começar a adicionar coisas a ele. Primeiro configurei o fluxo git
Por padrão, isso está no ramo
develop
. Eu adiciono meu código aqui, agora. Então eu preciso me comprometer com o repositório central do git.Nesse ponto, ele foi enviado para o ramo de desenvolvimento. Também quero adicionar isso ao ramo mestre.
Observe que eu não fiz nada entre o início e o término do lançamento. E quando terminei o lançamento, fui solicitado a editar dois arquivos. Isso levou o ramo de desenvolvimento a dominar.
No site de produção, que está na mesma máquina que meu repositório central do git, quero colocar o repositório
/var/www/vhosts/example.net
. Eu já tenho/var/www/vhosts
.Se a máquina de produção também estivesse em uma máquina diferente, o
git clone
comando seria semelhante ao usado na máquina de desenvolvimento.fonte
No início, estou com um pouco de falta das minhas habilidades no GIT.
Isso vai clonar um repositório vazio na sua máquina, que contém apenas as pastas dentro das
.git
quais há um diretório oculto. executarls -al
e você deve ver.git
oucd .git
dentro do seu repositório.Você pode adicionar uma descrição de sua intenção para que alguém com mais habilidades em GIT possa ajudar? O que você realmente quer fazer e como planeja fazê-lo?
fonte
Eu fiz: git clone --bare "/ GITREPOSITORIES / RepoA" "ssh: // luc @ EERSTENASDS119J / volume1 / RepoA" Resultado: fatal: caminho de destino 'ssh: // luc @ EERSTENASDS119J / volume1 / RepoA' já existe e é não é um diretório vazio.
O sistema criou um diretório ssh: // luc @ EERSTENASDS119J / volume1 / RepoA no meu caminho atual.
Portanto, o git clone não interpretou a especificação da URL. Usou a solução alternativa de Alec.
fonte
git clone git @ server: Exemplo / proyect.git
fonte