Clonando un repositorio privado de Github


226

Tengo un repositorio privado en Github para un proyecto en el que estoy trabajando. Hasta ahora solo había trabajado en el escritorio de mi casa, pero acabo de comprar una computadora portátil y estoy tratando de configurarla para poder trabajar en el proyecto desde cualquier computadora y hacer cambios push / pull.

Agregué una nueva clave SSH a mi cuenta de Github para la computadora portátil y logré clonar y realizar cambios en un repositorio público de prueba que configuré. Sin embargo, no pude clonar el repositorio privado. ¿Hay algo especial que deba hacer en la línea de comandos para clonar un repositorio privado? ¿Debo configurar una nueva cuenta de GitHub para mi computadora portátil y configurarme como colaborador?

El comando que usé fue git clone git://github.com/myusername/reponame.git


3
¿Qué comando usaste para intentar clonar el repositorio privado localmente? ¿Qué errores obtuviste?
Ron DeVera

Respuestas:


171

Las URL de clones privados toman la forma git@github.com:username/repo.git, ¿tal vez necesitabas usarlas en git@lugar de hacerlo git://?

git:// Las URL son de solo lectura y parece que los repositorios privados no permiten esta forma de acceso.


Sí, ¡usar "git@github.com:" en lugar de "https: //" resolvió mi problema! En realidad, habilité 2FA al mismo tiempo, pero eso no tenía nada que ver con eso.
leo

148

Esto funcionó para mí:

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

Esto, por supuesto, fue después de agregar mi clave SSH a Github . Usé esto en un servidor CentOs, si es necesario.


44
gracias por esto. Pero no soy consciente de por qué esto funciona. Nunca se le solicitó una contraseña. ¿Debe git clone a través de https de alguna manera tocar mis teclas ssh? No pensé.
reinhardt

1
Agradable, me permitió descargar un repositorio privado en Ubuntu.
Nino Škopac

¿Por qué esto funciona pero git@github.com: username / repo.git no?
diimdeep

@diimdeep Git y otras herramientas, a menudo usan el protocolo git: para acceder a archivos en repositorios remotos. Algunas configuraciones de firewall bloquean las URL de git: //, lo que genera errores al intentar clonar repositorios o descargar dependencias. (Por ejemplo, los firewalls corporativos son "notorios" para bloquear git:). Si se encuentra con este problema, puede forzar el uso de https: en su lugar, ejecute el siguiente comando: git config --global url. "Https: // ".insteadOf git: //
charlchad

1
En algunos casos, si se le solicita una contraseña y luego se le niega el acceso, puede deberse a que necesita proporcionar un "token de acceso personal" en lugar de su contraseña de inicio de sesión de GitHub. [1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/…
David Winiecki

71

Esto funcionó para mí:

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

55
esto es problemático con las contraseñas de caracteres especiales, deja la contraseña en los registros y no parece que trabajar más
pcnate

55
Pruebe esto: se le pedirá que ingrese la contraseña de su cuenta. No te preocupes por la contraseña que aprende al historial o los registros. git clone https://username@github.com/username/repo_name.git
Vinay

64

¡He encontrado este problema varias veces y cada vez que llegué a esta página, probé todo y fallé!

¡Es porque tengo 2FA habilitado!

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

Si ha habilitado la  autenticación de dos factores , o si está accediendo a una organización que utiliza el  inicio de sesión único SAML , debe  proporcionar un token de acceso personal en  lugar de ingresar su contraseña para HTTPS Git.

  1. Sigue este enlace y crea un token de acceso
  2. git clone https://github.com/username/repo_name.git (¡El enlace de repositorio de git predeterminado es lo suficientemente bueno!)
  3. ¡Ingrese su nombre de usuario y use el token de acceso como contraseña!

Actualizar:

  • Si no le importa exponer su token de acceso en la línea de comando, también puede pegar el token de acceso como nombre de usuario y luego presionar enter enter (sin necesidad de contraseña).
  • ¿Odias copiar y pegar el token de acceso una y otra vez?
    Uso git config credential.helper store(no haga esto en una máquina en la que no confía)

Si está en Windows, puede instalar github.com/microsoft/Git-Credential-Manager-for-Windows Luego, al clonar un repositorio privado, aparece la ventana de la interfaz de usuario con el inicio de sesión de Github. También le permitirá completar el código 2FA. Sus credenciales de Github se almacenarán de forma segura.
Jirik

18

Usando Git para Windows es más fácil usar la URL HTTPS.

Abre un git shell entonces git clone https://github.com/user/repo. Ingrese nombre de usuario y contraseña cuando se le solicite. No es necesario configurar una clave SSH.


1
Estoy de acuerdo con la simplicidad de no tener que configurar ssh
Félix Gagnon-Grenier

De acuerdo con otros comentarios, solo usar HTTPS url funciona perfectamente en Windows o Ubuntu (probado en 116.04)
greg_data

18

Para mí la solución fue:

git clone https://myusername@restoftherepolink.git

Aquí debes ser el propietario del repositorio, pero si no lo eres, irá como

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

Si tienes2FA enabled entonces:

  1. Vaya a la configuración desde el ícono de perfil en la esquina superior derecha o visite https://github.com/settings/profile
  2. Vaya a la pestaña inferior o vaya a https://github.com/settings/tokens
  3. Abre la última pestaña aquí Fichas personales. Y generar una ficha
  4. Copia el token y corre git clone https://myusername@restoftherepolink.git

Cuando se le solicite la contraseña, coloque ese token aquí. Imagen de generación de tokens aquí


1
parece que git solicita un nombre de usuario / contraseña si no hay un repositorio público con ese URI, por lo que el primer comando es correcto
pcnate

8

Tengo una cuenta de empresa (privada) y 2-Factor-Authentication habilitada, por lo que tuve que combinar algunas publicaciones para que funcione como se muestra a continuación. (Anotar así que puede ser útil para alguien con la misma situación)

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

Instalé el administrador de credenciales y actualicé GIT como se menciona aquí: https://codeshare.co.uk/blog/how-to-solve-the-github-error-fatal-httprequestexception-encountered/

Eso no resolvió el problema ya que el problema se movió a la siguiente cuando intenté usar el comando clonar de la siguiente manera:

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

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

Mi contraseña tenía el símbolo $ y por alguna razón la línea de comando GIT / GIT Bash no me gustó. Puedo ver esto en el error que devolvió el texto que no tenía el símbolo $.

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

Tenía que hacer referencia a este sitio: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

Tenga en cuenta: si se almacena una contraseña incorrecta para su cuenta en el Administrador de credenciales de Windows , también se agregará al problema. Eliminé la credencial de github almacenada de esta manera antes de pasar al siguiente paso.

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

Ahora apareció el administrador de credenciales de Windows. Escribí mi nombre de usuario y contraseña en los cuadros de texto (Esto aceptó mi contraseña que tenía el símbolo $) y me solicitó un código de autenticación de 2 factores. Escribí el código de autenticación de Google Authenticator, y el clon comenzó perfectamente.


El símbolo del dólar $es un personaje reservado en Unix. Marca el comienzo de la recuperación de un valor variable con ese nombre igual a la cadena que sigue al $símbolo.
Déjame pensarlo

Para mí, eliminar las credenciales de Windows solucionó el problema.
Michael Larionov

6

Al clonar desde repositorios privados con 2FA habilitado, hay unos simples pasos que debe seguir

  1. Ve a tu cuenta de Git
  2. Vaya a Configuración-> Configuración de desarrollador-> Token de acceso personal
  3. Haga clic en Generar nuevo token
  4. Crea un token con el título que quieras y con las funcionalidades
  5. Cuando clona el repositorio privado, usando git clone repoName, después de ingresar su nombre de usuario, otorgue un token de acceso personal como contraseña.

Siga los mismos pasos cuando reciba un mensaje de error de autenticación fallida para un repositorio privado


5

En respuesta a la respuesta de mac, puede obtener su URL de clonación SSH en su página de repositorio de github, haciendo clic SSHen You can clone with HTTPS, SSH, or Subversion.y copiando la URL.


4

Esto funcionó para mí en Mac git clone https://username@github.com:username/repo_name


3

Además de la respuesta de MK Yung: asegúrese de agregar la clave pública para el lugar donde esté implementando las claves de implementación para el repositorio, si no desea recibir una respuesta Prohibida 403.




1

Si la computadora recién utilizada tiene credenciales diferentes al ejecutar este comando

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

directamente no funcionará. Git intentará usar las credenciales almacenadas y no le pedirá el nombre de usuario y la contraseña. Dado que las credenciales no coinciden, se generará git Repository not foundy la operación de clonación fallará. La forma en que lo resolví fue eliminando las credenciales antiguas, ya que ya no las uso, ejecuté el comando mencionado nuevamente e ingresé el nombre de usuario y contraseña requeridos y cloné el repositorio privado.


1

1) intente ejecutar el comando con nombre de usuario y contraseña en el siguiente formato

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

Ahora el problema como otros han mencionado aquí es cuando tenemos un carácter especial en nuestra contraseña. En Javascript, use el siguiente código para convertir la contraseña con caracteres especiales a la codificación UTF-8.

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

ahora use esta contraseña generada en lugar de una con caracteres especiales y ejecute el comando.

Espero que esto resuelva el problema.



0

Si está seguro de que no tiene habilitado 2FA, tiene permiso para acceder al repositorio y el repositorio existe, es posible que su git@github.com haya iniciado sesión con otra cuenta.

para comprobar que puedes hacer

ssh -T git@github.com

Si muestra otra cuenta, para resolver este problema:

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

Se muestra: unknown option -T. Mi versión git es2.7.4
bvdb

@bvdb mis disculpas, debería haber sidossh -T git@github.com
Kexin Lu

0

Si quieres lograrlo Dockerfile, debajo de las líneas ayuda.

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

Entonces podemos construir con el siguiente argumento.

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

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

Cuando intente utilizar un repositorio privado del repositorio en el momento en que necesite pasar el nombre de usuario y la contraseña para eso.


Esto no es seguro. El repositorio clonado almacena el enlace http proporcionado en el archivo .git / config. Todas las confirmaciones realizadas en el repositorio local se pueden enviar a remoto sin requerir nombre de usuario y contraseña. ¡Lo cual es realmente peligroso si no eres el único usuario!
Tian
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.