2012-06-06 7 views
207

Soy el dueño de una organización en github y acaba de crear un acuerdo de recompra e intentaron empujar pero yo estoy corriendo en un problema por el que me está pidiendo mi nombre de usuario aunque puedo SSH bien:¿Por qué Github solicita un nombre de usuario/contraseña cuando sigue las instrucciones en la pantalla y empuja un nuevo repositorio?

$ ssh -T [email protected] 
Hi Celc! You've successfully authenticated, but GitHub does not provide shell access. 
$ git add . 
$ git commit -m 'first commit' 
[master (root-commit) 3f1b963] first commit 
6 files changed, 59 insertions(+) 
create mode 100644 .gitignore 
create mode 100644 main.js 
create mode 100644 package.json 
create mode 100644 readme.markdown 
create mode 100644 views/index.ejs 
create mode 100644 views/layout.ejs 
$ git remote add origin https://github.com/WEMP/project-slideshow.git 
$ git push -u origin master 
Username for 'https://github.com': 

¿Qué estoy haciendo mal? Esto nunca me había pasado antes, pero recientemente también actualicé a git 1.7.10.3.

Respuesta

457

No use el uso de HTTP en lugar de SSH

cambio

https://github.com/WEMP/project-slideshow.git 

a

[email protected]:WEMP/project-slideshow.git 

puede hacerlo en .git/config archivo

+1

¡Gracias! Me acabo de dar cuenta de esto después de leer http://stackoverflow.com/a/10126412/29347, no creo que github normalmente me da un repo remoto como HTTPS que causó cierta confusión. –

+2

Puede cambiar esta opción haciendo clic en el botón donde copia su url de clonación. –

+0

Pasa varias horas intentando encontrar el error. Muchas gracias. –

44

tuve este mismo problema y se preguntó por qué no sucedió con un repositorio bitbucket que se clonó con https. Al analizarlo un poco, descubrí que la configuración para el repositorio de BB tenía una URL que incluía mi nombre de usuario. Así que edité manualmente la configuración para mi repositorio de GH como tal y listo, no más indicaciones de nombre de usuario. Estoy en Windows.

Editar your_repo_dir/.git/config (recuerda: .git carpeta está oculta)

Cambio:

https://github.com/WEMP/project-slideshow.git 

a:

https://*username*@github.com/WEMP/project-slideshow.git 

Guarde el archivo. Haz un git pull para probarlo.

La forma correcta de hacer esto es probablemente mediante el uso de comandos de git bash para editar la configuración, pero la edición del archivo directamente no parece ser un problema.

+0

Ese es un buen punto, si incluye el nombre de usuario será manejado por el llavero del sistema operativo (al menos debería en OSX, y aparentemente también en Windows). No hay diferencia entre editar el archivo con el bloc de notas o con vim/emacs/nano/vi, no me preocuparía tanto sobre el esnobismo técnico, es solo un archivo de texto plano de todos modos. –

7

una nota adicional:

Si ya ha añadido un control remoto ($ git add remoto origen ...) y tener que cambiarlo en particular a distancia y luego hacer un quite a distancia en primer lugar ($ git rm origen remoto), antes de volver a agregar la URL nueva y mejorada de repos (donde "origen" era el nombre del repositorio remoto).

manera de utilizar el original ejemplo:

$ git remote add origin https://github.com/WEMP/project-slideshow.git 
$ git remote rm origin 
$ git remote add origin https://[email protected]/WEMP/project-slideshow.git 
+0

'$ git remote -v' mostrará el repositorio y el url – IanI

+4

No es necesario que retire el control remoto. Simplemente puede cambiar la URL: 'git remote set-url origen https: // github-username @ github.com/WEMP/project-slideshow.git' – shovavnik

5

Acabo de recibir un correo electrónico de un administrador github.com que indica lo siguiente: "Normalmente aconsejamos a la gente a utilizar la URL HTTPS a menos que tengan una específica Motivo para utilizar el protocolo SSH. HTTPS es seguro y más fácil de configurar, por lo que de forma predeterminada cuando se crea un nuevo repositorio ".

La solicitud de contraseña acepta los detalles normales de inicio de sesión de github.com. Puede encontrar un tutorial sobre cómo configurar el almacenamiento en contraseñas en el https://help.github.com/articles/set-up-git#password-caching. Seguí los pasos del tutorial, y funcionó para mí.

+0

La URL se ha actualizado: https: //help.github.com/articles/caching-your-github-password-in-git – MarkHu

12

Aquí es un official answer a esto:

Si Git le pide un nombre de usuario y contraseña cada vez que intenta interactuar con GitHub, es probable que el uso de la URL clon HTTPS para su repositorio.

El uso de an HTTPS remote URL tiene algunas ventajas: es más fácil de configurar que los SSH, y por lo general funciona a través de servidores de seguridad y servidores proxy estrictos. Sin embargo, también le solicita ingresar sus credenciales de GitHub cada vez que tira o empuja un repositorio.

Puede configurar que Git almacene su contraseña por usted. Si desea configurarlo, lea todo sobre setting up password caching.

3

Porque está utilizando HTTPS manera. HTTPS requiere que escriba su cuenta de acceso cada vez que intente empujar o tirar de, pero hay una manera también, llamado SSH, y se deja que le diga git, que Te doy permiso a mi cuenta para esta pc, y nunca me preguntes nuevamente sobre ningún acceso de usuario. Para usarlo, usted tiene que generar SSH llave y agrega en su cuenta de Github de una sola vez .Para hacer eso, puede seguir estos pasos

How To Generate SSH key for Github

4

Mejorando @ de IANL answer,

Si desea desactivar las indicaciones tanto para el nombre de usuario y contraseña entonces se puede establecer la URL de la siguiente manera -

git remote set-url origin https://username:[email protected]/WEMP/project-slideshow.git 

Tenga en cuenta que la URL tiene tanto el nombre de usuario como la contraseña. Además, el archivo .git/config debe mostrar su configuración actual.

3

Si está utilizando HTTPS, verifique que su URL sea correcta. Por ejemplo:

$ git clone https://github.com/wellle/targets.git 
Cloning into 'targets'... 
Username for 'https://github.com': ^C 

$ git clone https://github.com/wellle/targets.vim.git 
Cloning into 'targets.vim'... 
remote: Counting objects: 2182, done. 
remote: Total 2182 (delta 0), reused 0 (delta 0), pack-reused 2182 
Receiving objects: 100% (2182/2182), 595.77 KiB | 0 bytes/s, done. 
Resolving deltas: 100% (1044/1044), done. 
+1

¡Es un gran punto! Si tiene un error tipográfico en la URL, se le pedirá el 'Nombre de usuario' en lugar de que le digan que el repositorio no existe. – dmitrii

Cuestiones relacionadas