No se puede enviar el maestro de Git a Github: el 'origen' no parece ser un repositorio de git / permiso denegado

84

Esta pregunta está relacionada con mi problema para entender rebase, branch and merge , y con el problema

¿Cómo puede comprometerse con su cuenta de github si tiene un teamMate en su lista remota?

Descubrí que otras personas han tenido el mismo problema. El problema parece estar relacionado con /etc/xinet.d/.

Problema: no puedo enviar mi rama local a mi rama principal en Github

Corro

git push origin master

yo obtengo

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

El mensaje de error me sugiere que la rama 'origen' no está en mi repositorio local de git. De esta forma, Git deja de conectarse a Github.

Esto es extraño, ya que no he eliminado la rama 'origen'.

Mi árbol git es

  dev
* master
  ticgit
  remotes/Math/Math
  remotes/Math/master
  remotes/origin/master
  remotes/Masi/master

¿Cómo puedes enviar tu sucursal local a Github , mientras tienes una sucursal de teamMate en tu Git local?


La respuesta de VonC resuelve el problema principal. Le puse passphares a mis claves ssh.

Corro

$git push github master     

yo obtengo

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Parece que necesito dar la frase de contraseña para Git de alguna manera.

¿Cómo puedes hacer que Github te pida tu contraseña en lugar de depender de la clave ssh?

Léo Léopold Hertz 준영
fuente
Acabo de actualizar mi respuesta. Los parámetros de SSH no lo son todo. user.name y github.user también son importantes
VonC
Actualicé mi respuesta nuevamente, con algunas verificaciones de configuración de ssh más
VonC
"Permiso denegado (clave pública)". en realidad significa que intentó iniciar sesión con su clave pública, y se le negó el permiso, en lugar de no tener acceso a su clave pública.
Xiong Chiamiov
Mi problema fue una clave ssh diferente de un sistema diferente. Subí la otra clave y todo estuvo bien. Lo descubrí con el truco ssh -v [email protected].
finalmente

Respuestas:

96

Que hace

$ git config --get-regexp '^(remote|branch)\.'

devuelve (ejecutado dentro de su repositorio de git)?

Origin es solo una convención de nomenclatura predeterminada para hacer referencia a un repositorio Git remoto.

Si no se refiere a GitHub (sino a una ruta al repositorio de su compañero de equipo, ruta que puede que ya no sea válida o ya no esté disponible), simplemente agregue otro origen, como en esta entrada de Bloggitation

$ git remote add origin2 [email protected]:myLogin/myProject.git
$ git push origin2 master

(De hecho, usaría el nombre 'github' en lugar de 'origen' u 'origen2')


Permiso denegado (clave pública).
fatal: el extremo remoto colgó inesperadamente

Comprueba si tu identidad de gitHub está declarada correctamente en tu repositorio de Git local, como se menciona en la guía de ayuda de GitHub . (tanto user.name como github.name - y github.token)

Luego, el blog de Stonean sugiere (al igual que Marcio García ):

$ cd ~/.ssh
$ ssh-add id_rsa

Aral Balkan agrega: crea un archivo de configuración

La solución fue crear un archivo de configuración en ~ / .ssh / como se describe en la parte inferior de la sección OS X de esta página .

Aquí está el archivo que agregué, según las instrucciones en la página, y mis empujes comenzaron a funcionar nuevamente:

Host github.com
User git
Port 22
Hostname github.com
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

También puede publicar el resultado de

ssh -v [email protected]

para tener más información sobre por qué la conexión ssh de GitHub lo rechaza.

Verifique también que ingresó correctamente su clave pública (debe terminar con ' ==').
No pegues tu clave privada, sino la pública. Una clave pública se vería así:

ssh-rsa AAAAB3<big string here>== [email protected] 

(Nota: ¿usó una frase de contraseña para sus claves ssh? Sería más fácil sin una frase de contraseña)

Verifique también la URL utilizada al presionar ( [email protected]/..., no git://github.com/...)

Compruebe que tiene un agente SSH para usar y almacenar en caché su clave.

Prueba esto:

 $ ssh -i path/to/public/key [email protected]

Si eso funciona, significa que su cliente ssh no está enviando su clave a GitHub.

VonC
fuente
1
¡Qué lástima que no puedo votarte más de una vez! Tuve este problema dos veces en dos semanas y después de buscarlo en Google cada vez que encontré esta publicación SO. ¡GRACIAS! :)
Ionuț Staicu
1
Estaba luchando con esto, había cambiado toda la configuración de git, pero ssh-add era el paso que me faltaba, ¡muchas gracias!
metadaddy
Fue solo una pequeña sugerencia en el contexto de esta gran respuesta, pero me encanta la parte de cambiar el nombre de "Origen" a "GitHub" (o nombre del servidor) que realmente ayuda a conceptualizar dónde está enviando las cosas.
Alex C
Esto también funcionó para mí. Si sigue las instrucciones en github, no es inmediatamente obvio cuál es el origen.
nick
help.github.com/win-set-up-git seguir hasta el final, me ayudó. Permiso denegado (clave pública). - significa que configuró una clave ssh para su git en su máquina local. ssh-keygen -t rsa -C "[email protected]"
Roger Alien
28

Este es un problema con su control remoto. Cuando lo hace git push origin master, origines el control remoto y masteres la rama que está empujando.

Cuando haces esto:

git remote

Apuesto a que la lista no incluye origin. Para volver a agregar el origen remoto:

git remote add origin [email protected]:your_github_username/your_github_app.git

O, si existe pero tiene un formato incorrecto:

git remote rm origin
git remote add origin [email protected]:your_github_username/your_github_app.git
Sarah Mei
fuente
10

La respuesta de VonC es la mejor, pero la parte que funcionó para mí fue súper simple y está enterrada entre muchas otras respuestas posibles. Si es como yo, se encontró con este problema mientras ejecutaba un tutorial de "introducción a rieles" y NO había configurado sus claves SSH públicas / privadas.

Si es así, intente esto:

  1. $>cd ~/.ssh

  2. $>ls

  3. Si el resultado de ls es known_hostsy nada más, visite: http://help.github.com/mac-key-setup/ y comience a seguir las instrucciones de la sección "Generación de una clave" y hacia abajo.

Después de ejecutar esas instrucciones, mi comando "git push origin master" funcionó.

johnnygoodman
fuente
Solo estaba buscando esta página. ¡Eso es mucho! = D
Hugo Mota
Resolvió mi problema. Mi sistema operativo es Mac OS X, y estaba siguiendo el libro "Ruby on Rails 3 Tutorial", y me quedé atascado en la sección 1.3.4 cuando necesitaba hacer una. git push origin master.Era la primera vez que configuraba Git y Rails. Con suerte, esto ayudó a otras personas.
sivabudh
4

Tengo el mismo problema y creo que el firewall está bloqueando el protocolo git. Entonces, al final, tengo que recurrir al uso de https: // para buscar y empujar. Sin embargo, esto siempre le pedirá al usuario que ingrese la contraseña ...

aquí está el ejemplo de lo que funciona para mí (solo para compartir con aquellos que no pueden usar el protocolo git: // :)

git fetch https://[user-name]@github.com/[user-name]/[project].git

si lo anterior funciona, puede eliminar el origen y reemplazarlo con

git remote rm origin  
git remote add origin https://[user-name]@github.com/[user-name]/[project].git
conocido
fuente
1
Puede usar el ~/.netrcarchivo para almacenar la contraseña por usted si lo desea. Lo usa curl, que es lo que usa git para las transferencias HTTP (S), en caso de que necesite buscar los detalles específicos de cómo usarlo.
Arrowmaster
1
@Arrowmaster: tenga en cuenta que si está en Windows, debe usar ~/_netrc(' _', no ' .')
VonC
Gracias por los comentarios, ¡lo intentaré!
ken
Esto funcionó para mí. Gracias. Me pregunto si esto es un error o no.
Larry Battle
1

Creo que ese es otro caso de mensajes de error de git engañosos. Por lo general, cuando veo ese error se debe a problemas de ssh. ¿Agregaste tu clave ssh pública a tu cuenta de github?

Editar: Además, la publicación del foro xinet.d se refiere a ejecutar git-daemon como un servicio para que la gente pueda extraer de su sistema. No es necesario ejecutar git-daemon para enviar a github.

Aaron
fuente
1
Agregué mi clave pública a mi cuenta de github. - El problema comenzó después de que agregué una rama remota a mi Git.
Léo Léopold Hertz 준영
1
Creé un nuevo par de claves ssh. Pegué la nueva clave en Github y eliminé la antigua de Github. Persiste el mismo problema.
Léo Léopold Hertz 준영
1

Tengo el mismo problema y acabo de agregar el contenido de ~ / .ssh / id_rsa.pub a mi cuenta en GitHub. Después de eso, intente nuevamente git push origin master, debería funcionar.

Julio Menéndez
fuente
0

La clave para recordar es que 'origen' no es el valor que puede necesitar usar ... funcionó para mí cuando reemplacé 'origen' con el nombre del repositorio.

ATSiem
fuente
0

Una posibilidad que las respuestas anteriores no abordan es que es posible que no tenga acceso ssh desde su shell. Es decir, puede estar en una red (algunas redes universitarias hacen esto) donde el servicio ssh está bloqueado, en ese caso no solo podrá obtener servicios github sino también cualquier otro servicio ssh. Puede probar si este es el problema intentando utilizar cualquier otro servicio ssh. Este fue mi caso.

Sravan
fuente
0

Tuve este problema y probé varias soluciones para resolverlo, incluidas muchas de las enumeradas anteriormente (archivo de configuración, depuración ssh, etc.). Al final, lo resolví al incluir el interruptor -u en el git push, según las instrucciones de github al crear un nuevo repositorio en el sitio: nuevo repositorio de Github

sjpknight
fuente