2009-05-28 23 views
83

Esta pregunta se relaciona con mi problema en understanding rebase, branch and merge, y al problemaIncapaz de Git push maestro para Github

¿Cómo se puede confiar a su cuenta de GitHub y cuando usted tiene un compañero de equipo en la lista de control remoto?

Descubrí que other people ha tenido el mismo problema. El problema parece estar relacionado con /etc/xinet.d/.

Problema: incapaz de empujar mi rama local a mi rama principal en Github

corro

git push origin master 

consigo

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

El mensaje de error que me indica que la rama 'origen' no está en mi repositorio git local. De esta manera, Git deja de conectarse con 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 se puede empujar a su sucursal local para Github, mientras tiene rama de un compañero de equipo en el local de Git?


La respuesta de VonC resuelve el problema principal. Puse un contraseña en mis claves ssh.

corro

$git push github master  

me sale

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

Parece que tengo que dar la contraseña para Git alguna manera.

¿Cómo se puede hacer que Github solicite su contraseña en lugar de confiar en la clave ssh?

+0

Acabo de actualizar mi respuesta.Los parámetros de Ssh no son todos. user.name y github.user también son importantes – VonC

+0

Actualicé mi respuesta nuevamente, con algunos controles de configuración de ssh adicionales – VonC

+0

"Permiso denegado (clave pública)". en realidad significa que trataste de iniciar sesión usando tu clave pública, y se denegó el permiso, en lugar de que no se permitiera el acceso a tu clave pública. –

Respuesta

96

Lo que hace

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

retornos (ejecutado dentro de su repositorio git)?

El origen es solo una convención de nomenclatura predeterminada para referirse a un repositorio remoto de Git.

Si no se refiere a GitHub (sino más bien un camino a su repositorio de su compañero de equipo, camino que puede que ya no sea válido o está disponible), sólo tiene que añadir otro origen, como en este Bloggitation entry

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

(I sería en realidad utilizar el nombre 'github' en lugar de 'origen' o 'origen2')


permiso denegado (publickey).
fatal: El extremo remoto colgó inesperadamente

Compruebe si su identidad GitHub se declara correctamente en su repositorio Git local, tal como se menciona en the GitHub Help guide. (Ambos user.name y github.name - y github.token)

Entonces, stonean blog sugiere (como lo hace Marcio Garcia):

$ cd ~/.ssh 
$ ssh-add id_rsa 

Aral Balkan añade: crear un archivo de configuración

la solución fue crear un archivo de configuración en ~/.ssh/como se indica en el bottom of the OS X section of this page.

Aquí está el archivo que he añadido, de acuerdo con las instrucciones de la página, y mis empujones comenzó a trabajar de nuevo:

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] 

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

Check también lo hizo introducir correctamente su clave pública (que necesita para terminar con '==').
No pegue su clave privada, sino la pública. Una clave pública se vería algo como:

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 contraseña)

Comprobar también la URL utilizada cuando se empuja ([email protected]/..., no git://github.com/...)

Compruebe que usted 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, entonces significa que su clave no está siendo enviada a GitHub por su cliente SSH.

+1

@VonC: ¡Gracias! Problema resuelto. –

+1

Lástima que no puedo votar más de una vez! Tuve este problema dos veces en dos semanas y luego googleé cada vez que encontré esta publicación SO. ¡GRACIAS! :) –

+1

+ para el truco ssh -v [email protected] Muy aseado. – nalply

1

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

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

+1

Agregué mi clave pública a mi cuenta github. - El problema comenzó después de que agregué una rama remota a mi Git. –

+1

Creé un nuevo par de claves ssh. Pegué la nueva clave a Github y eliminé la anterior de Github. El mismo problema persiste. –

28

Este es un problema con el mando a distancia. Cuando lo haga git push origin master, origin es el control remoto y master es la rama que está empujando.

Al hacer esto:

git remote 

apuesto a la lista no incluye origin. Para volver a agregar el control remoto origen:

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

O, si es que existe, pero tiene un formato incorrecto:

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

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

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 posibles respuestas. Si eres como yo, te topaste con este problema al ejecutar un tutorial de "iniciación con rieles" y NO has configurado tus claves SSH públicas/privadas.

Si es así, intente esto:

  1. $>cd ~/.ssh

  2. $>ls

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

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

+0

solo estaba buscando esta página. eso es mucho! = D –

+0

Resolvió mi problema. Mi sistema operativo es Mac OS X, y estaba siguiendo el libro "Ruby on Rails 3 Tutorial", y me quedé atrapado en la sección 1.3.4 cuando necesitaba hacer un maestro de origen 'git push'. 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 cortafuegos está bloqueando el protocolo git. Así que al final tengo que recurrir al uso de https: // para buscar y enviar. Sin embargo, esto siempre se le solicitará al usuario que introduzca la contraseña ...

aquí es el ejemplo de lo que trabaja para mí (sólo para compartir con los que su uso no puede git: // protocolo :)

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

si el por encima de las obras, se puede quitar el origen y reemplazar con

git remote rm origin 
git remote add origin https://[user-name]@github.com/[user-name]/[project].git 
+1

Puede usar el almacén de archivos '~/.netrc' la contraseña si lo desea. Es utilizado por 'curl', que es lo que git usa para las transferencias HTTP (S), en caso de que necesite buscar los detalles de cómo usarlo. – Arrowmaster

+1

@Arrowmaster: tenga en cuenta que si está en Windows, necesita usar '~/_netrc' ('' _'', no '' .' ') – VonC

+0

Gracias por los comentarios, lo intentaré! – ken

0

Ellos clave para recordar es 'origen' no es el valor que puede ser necesario el uso de ... funcionó para mí cuando reemplacé 'origen' con el nombre del repositorio.

0

Una posibilidad que las respuestas anteriores no abordan es que no puede tener un acceso ssh desde su shell. Es decir, puede estar en una red (algunas redes universitarias lo hacen) donde el servicio ssh está bloqueado. En ese caso, no solo podrá obtener servicios de github sino también cualquier otro servicio de ssh. Puede probar si este es el problema tratando de usar cualquier otro servicio ssh. Este fue el caso conmigo.

0

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

Cuestiones relacionadas