Clonando um repositório privado do Github


226

Eu tenho um repositório particular no Github para um projeto no qual estou trabalhando. Até agora, eu trabalhava apenas na minha área de trabalho em casa, mas acabei de comprar um laptop e estou tentando configurá-lo para que eu possa trabalhar no projeto a partir de qualquer computador e fazer alterações push / pull.

Adicionei uma nova chave SSH à minha conta do Github para o laptop e consegui clonar e fazer alterações em um repositório de teste público que eu configurei. No entanto, não consegui clonar o repositório particular. Existe algo especial que preciso fazer na linha de comando para clonar um repositório particular? Preciso configurar uma nova conta do GitHub para o meu laptop e me configurar como colaborador?

O comando que eu usei foi git clone git://github.com/myusername/reponame.git


3
Qual comando você usou para tentar clonar o repositório particular localmente? Quais erros você recebeu?
Ron DeVera

Respostas:


171

URLs de clones privados assumem a forma git@github.com:username/repo.git- talvez você precise usar git@e não git://?

git:// Os URLs são somente leitura e parece que repositórios particulares não permitem essa forma de acesso.


Sim - usar "git@github.com:" em vez de "https: //" resolveu meu problema! Na verdade, ativei o 2FA ao mesmo tempo, mas isso não tinha nada a ver com isso.
leo

148

Isso funcionou para mim:

git clone https://username@github.com/username/repo_name

Isso, é claro, foi depois de adicionar minha chave SSH ao Github . Usei isso em um servidor CentOs, se necessário.


4
obrigado por isso. Mas não sei por que isso funciona. Nunca foi solicitada uma senha. O git clone via https de alguma forma toca minhas teclas ssh? Eu pensei que não.
reinhardt 31/05

1
Bom, ele me permitiu baixar um repositório particular no Ubuntu.
Nino Škopac

Por que isso funciona, mas git@github.com: nome de usuário / repo.git não?
Diimdeep 3/17

@diimdeep O Git e outras ferramentas geralmente usam o protocolo git: para acessar arquivos em repositórios remotos. Algumas configurações de firewall estão bloqueando as URLs git: //, o que leva a erros ao tentar clonar repositórios ou baixar dependências. (Por exemplo, os firewalls corporativos são "notórios" por bloquear o git :.) Se você enfrentar esse problema, poderá forçar o uso de https: em vez disso, executando o seguinte comando: git config --global url. "Https: // ".insteadDe git: //
charlchad

1
Em alguns casos, se você for solicitado uma senha e, em seguida, negar o acesso, pode ser porque você precisa fornecer um "token de acesso pessoal" em vez da sua senha de login do GitHub. [1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/…
David Winiecki

71

Isso funcionou para mim:

git clone https://username:password@github.com/username/repo_name.git

5
isso é problemático com senhas de caracteres especiais, deixa sua senha nos logs e não parece mais trabalhar
pcnate

5
Tente isto - Você será solicitado a digitar a senha da sua conta. Não se preocupe com a busca de senhas no histórico ou nos logs. git clone https://username@github.com/username/repo_name.git
Vinay

64

Eu já encontrei esse problema várias vezes e sempre que cheguei nesta página, tentei de tudo e falhei!

É porque eu tenho 2FA habilitado !!!

De acordo com https://help.github.com/articles/which-remote-url-should-i-use/#when-2fa-is-enabled

Se você ativou  a autenticação de dois fatores , ou se estiver acessando uma organização que usa o  logon único SAML , deverá  fornecer um token de acesso pessoal em  vez de digitar sua senha para HTTPS Git.

  1. Siga este link e crie um token de acesso
  2. git clone https://github.com/username/repo_name.git (O link padrão do repositório git é bom o suficiente!)
  3. Digite seu nome de usuário e use o token de acesso como senha !!

Atualizar:

  • Se você não se importa de expor seu token de acesso na linha de comando, também pode colar o token de acesso como nome de usuário e pressionar Enter (sem necessidade de senha).
  • Odeio copiar e colar o token de acesso repetidamente?
    Use git config credential.helper store(não faça isso na máquina em que não confia)

Se você estiver no Windows, poderá instalar o github.com/microsoft/Git-Credential-Manager-for-Windows. Ao clonar um repositório particular, a janela da interface do usuário com o logon do Github é exibida. Também permitirá que você preencha o código 2FA. Suas credenciais do Github serão armazenadas com segurança.
Jirik

18

Usando o Git para Windows, é mais fácil usar o URL HTTPS.

Abra um shell git então git clone https://github.com/user/repo. Digite o nome de usuário e a senha quando solicitado. Não há necessidade de configurar uma chave SSH.


1
Concordo com a simplicidade de não ter de ssh configuração
Félix Gagnon-Grenier

Concordo com outros comentários, apenas usando HTTPS url perfeito funciona no Windows ou Ubuntu (tentou em 116,04)
greg_data

18

Para mim, a solução foi:

git clone https://myusername@restoftherepolink.git

Aqui você precisa ser o proprietário do repo, mas se não for, ele será o

git clone https://myusername@github.com/ownersusername/repo_name.git

Se você tem2FA enabled então:

  1. Vá para as configurações no ícone do perfil no canto superior direito ou visite https://github.com/settings/profile
  2. Vá para a guia inferior ou acesse https://github.com/settings/tokens
  3. Abra a última guia aqui Tokens pessoais. E gere um token
  4. Copie o token e execute git clone https://myusername@restoftherepolink.git

Quando a senha for solicitada, coloque esse token aqui. Imagem de geração de token aqui


1
olhares como prompts Git para nome de usuário / senha, se não houver repositório público com esse URI, de modo que o primeiro comando está correto
pcnate

8

Eu tenho uma conta corporativa (privada) e autenticação de dois fatores ativada, então tive que combinar algumas postagens para fazê-lo funcionar como abaixo. (Anotando para que possa ser útil para alguém com a mesma situação)

Initially it was the Fatal Error. 
fatal: repository 'https:
...
remote: Repository not found.
fatal: repository 'https:

Instalei o gerenciador de credenciais e atualizou o GIT conforme mencionado aqui: https://codeshare.co.uk/blog/how-to-solve-the-github-error-fatal-httprequestexception-encountered/

Isso não resolveu o problema, pois o problema mudou para o abaixo quando tentei usar o comando clone da seguinte maneira:

$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

remote: Invalid username or password.
fatal: Authentication failed for 'https://

Minha senha tinha o símbolo $ e, por algum motivo, a linha de comando do GIT / GIT Bash não gostou. Eu posso ver isso no erro que o texto retornado não tinha o símbolo $.

fatal: Authentication failed for 'https://<username>:<password-missing-$-symbol>@github.com/<ORG_NAME>/<PROJECT-NAME>.git'

Eu tive que referenciar este site: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

Observação: se uma senha incorreta for armazenada para sua conta no Windows Credential Manager, ela também será adicionada ao problema. Removai a credencial do github armazenada dessa maneira antes de passar para a etapa abaixo.

$ git config --global credential.helper cache
$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

Agora, o gerenciador de credenciais do Windows apareceu. Digitei meu nome de usuário e senha nas caixas de texto (Isso aceitou minha senha que tinha o símbolo $) e solicitou um código de autenticação de dois fatores. Digitei o código de autenticação do Google Authenticator e o clone começou perfeitamente.


O símbolo do dólar $é um caractere reservado no Unix. Ele marca o início da recuperação de um valor variável com esse nome igual à sequência que segue o $símbolo.
Deixe-me mexer nisso

Para mim, excluir as credenciais do Windows corrigiu o problema.
Michael Larionov

6

Ao clonar de repositórios particulares com o 2FA enable, existem algumas etapas simples que você precisa seguir

  1. Vá para sua conta Git
  2. Vá para Configurações-> Configurações do desenvolvedor-> Token de acesso pessoal
  3. Clique em Gerar novo token
  4. Crie um token com o título desejado e com as funcionalidades
  5. Quando você estiver clonando o repositório particular, usando git clone repoName, depois de inserir seu nome de usuário, forneça o token de acesso pessoal como a senha.

Siga as mesmas etapas ao receber a mensagem de erro Falha na autenticação para repositório particular


5

Em resposta a resposta de mac, você pode obter o seu SSH clone URL no seu github repo página, clicando SSHem You can clone with HTTPS, SSH, or Subversion.e copiar o URL.


4

Isso funcionou para mim no mac git clone https://username@github.com:username/repo_name


3

Além da resposta de MK Yung: adicione a chave pública de onde quer que esteja implantando às chaves de implantação do repositório, se não desejar receber uma resposta 403 Proibida.




1

Se o computador recém-usado tiver credenciais diferentes executando este comando

git clone https://github.com/username/reponame.git

diretamente não vai funcionar. O Git tentará usar as credenciais armazenadas e não solicitará o nome de usuário e a senha. Como as credenciais são incompatíveis, o git será gerado Repository not founde a operação de clone falhará. A maneira como resolvi foi excluindo as credenciais antigas, já que não as utilizo mais, e executei o comando acima mencionado novamente, digitei o nome de usuário e a senha necessários e clonou o repositório particular.


1

1) tente executar o comando com nome de usuário e senha no formato abaixo

git clone https://your_username:your_password@github.com/username/reponame.git

Agora, o problema que os outros mencionaram aqui é quando temos um caractere especial em nossa senha. Em Javascript, use o código abaixo para converter senha com caracteres especiais em codificação UTF-8.

console.log(encodeURIComponent('password@$123'));

agora use essa senha gerada em vez de uma com caracteres especiais e execute o comando

Espero que isso resolva o problema.



0

Se você tem certeza de que não possui o 2FA ativado, tem permissão para acessar o repositório, e o repositório existe, é possível que seu git@github.com esteja logado com outra conta.

para verificar se você pode fazer

ssh -T git@github.com

Se ele mostrar outra conta, para resolver esse problema:

 ssh-add -D
 ssh-add ~/.ssh/your_rsa
 ssh -T git@github.com
 git clone git@github.com:<owner_name>/<repo_name>.git

Ele exibe: unknown option -T. Minha versão do git é2.7.4
bvdb 21/10/19

@bvdb minhas desculpas, que deveria ter sidossh -T git@github.com
Kexin Lu

0

Se você deseja alcançá-lo Dockerfile, as linhas abaixo ajudam.

ARG git_personal_token
RUN git config --global url."https://${git_personal_token}:@github.com/".insteadOf "https://github.com/"
RUN git clone https://github.com/your/project.git /project

Então podemos construir com o argumento abaixo.

docker build --build-arg git_personal_token={your_token} .

0
git clone https://myusername:mygithubpassword@github.com/myusername/project.git

Quando você está tentando usar um repositório particular no momento, é necessário passar o nome de usuário e a senha para isso.


Isso não é seguro. O repositório clonado armazena o link http fornecido no arquivo .git / config. Todas as confirmações feitas no repositório local podem ser enviadas para remoto sem exigir nome de usuário e senha. O que é realmente perigoso se você não é o único usuário!
Tian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.