Git / GitHub no puede presionar para dominar

151

Soy nuevo en Git / GitHub y me encontré con un problema. Creé un proyecto de prueba y lo agregué al repositorio local. Ahora estoy tratando de agregar archivos / proyectos al repositorio remoto.

Esto es lo que hice (y esto funcionó):

git remote add origin git://github.com/my_user_name/my_repo.git

Ahora, cuando intento enviar el repositorio a GitHub, usando el siguiente comando, aparece el siguiente error:

git push origin master

Error

fatal: remote error:
You can't push to git://github.com/my_user_name/my_repo.git
Use [email protected]:my_user_name/my_repo.git
kapso
fuente
Hay un enlace de ayuda ( help.github.com ) en la parte inferior de todas las páginas de github. La ayuda describe muchos temas, incluido este. Sugeriría leerlos y luego hacer preguntas sobre cosas específicas que no entiendes.
jamessan
21
si jamessan hubiera señalado una ubicación específica en las páginas de ayuda, eso habría sido más útil.
Deonomo
1
posible duplicado de git github no puede empujar a origen
gion_13

Respuestas:

244

GitHub no admite el empuje sobre el protocolo Git, que se indica mediante el uso de la URL que comienza git://. Como dice el mensaje de error, si desea presionar, debe usar la URL SSH [email protected]:my_user_name/my_repo.gito el protocolo "HTTP inteligente" usando la https://URL que GitHub le muestra para su repositorio.

(Actualización: para mi sorpresa, algunas personas aparentemente pensaron que con esto estaba sugiriendo que "https" significa "HTTP inteligente", que no era. Git solía tener un protocolo "HTTP tonto" que no permitía presionar antes Se introdujo el "HTTP inteligente" que utiliza GitHub, ya sea que se puede utilizar sobre cualquiera de ellos httpo https. Las diferencias entre los protocolos de transferencia utilizados por Git se explican en el siguiente enlace).

Si desea cambiar la URL de origen, simplemente puede hacer:

git remote set-url origin [email protected]:my_user_name/my_repo.git

o

git remote set-url origin https://github.com/my_user_name/my_repo.git

Más información está disponible en 10.6 Git Internals - Protocolos de transferencia .

Mark Longair
fuente
Así que cambié la URL y volví a intentar la inserción, obtengo este error ahora - ERROR: my_user_name / my_repo.git no existe. ¿Lo ingresaste correctamente? fatal: el extremo remoto colgó inesperadamente
kapso
¿Es la URL que ha establecido definitivamente la que puede copiar y pegar desde la página para su repositorio en GitHub? (Por cierto, distingue entre mayúsculas y minúsculas).
Mark Longair
1
De acuerdo, bueno, debe crear el repositorio en GitHub antes de poder avanzar; cuando lo haga, le dará instrucciones sobre cómo clonar o empujar al repositorio.
Mark Longair
1
Acabo de tener este mismo problema. En realidad, el problema era que tenía una barra "/" entre github.com y su nombre de usuario. Y debería ser un colon ":". Ese es el problema: D
Wilmer E. Henao
2
@WilmerEHenaoH: ese podría haber sido tu problema, pero no fue el problema en la pregunta o en mi respuesta;) (Solo por interés, a veces hay confusión sobre los dos estilos de URL SSH en git , uno de los cuales usa dos puntos para separar el nombre de host y la ruta y el otro no)
Mark Longair
37

Use la respuesta de Mark Longair , pero asegúrese de usar el enlace HTTPS al repositorio:

git remote set-url origin https://github.com/my_user_name/my_repo.git

Puedes usar entonces git push origin master.

Abdo
fuente
1
Esto funciona para mi. Entonces solo escribir git pushtambién funciona.
youngzy
13

La solución de Mark Longair usando git remote set-url...es bastante clara. También puede obtener el mismo comportamiento editando directamente esta sección del archivo .git / config:

antes de:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git://github.com/my_user_name/my_repo.git

después:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = [email protected]:my_user_name/my_repo.git

(Y a la inversa, la git remote set-url...invocación produce el cambio anterior).

Chaqueta morada
fuente
2

Hay una solución simple para esto para alguien nuevo en esto:

Edite el archivo de configuración en su directorio local .git ( config). Cambiar git:a https:continuación.

[remote "origin"]
    url = https://github.com/your_username/your_repo
ParamQuery
fuente
1
Incorrecto, el protocolo https no permitirá empujones. Ver: libro "Pro Git", sección 4.1.4 "Protocolo HTTP / S". Enlace: git-scm.com/book/en/v2
Kevin J. Rice
@ KevinJ.Rice: uhm, ¿dónde dice eso ? Github usa el protocolo HTTP inteligente y eso permite empujar muy bien .
Martijn Pieters
1

Tuve este problema después de actualizar el cliente de Git , y de repente mi repositorio no pudo presionar.

Descubrí que algún control remoto antiguo tenía el valor incorrecto url, incluso a través de mi control remoto actualmente activo tenía el mismo valor urly funcionaba bien.

Pero también estaba el pushurlparámetro, así que agregarlo para el viejo control remoto funcionó para mí:

Antes de:

[remote "origin"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = [email protected]:user/repo.git

NOTA: Esta parte del archivo "config" no se usó durante mucho tiempo, pero el nuevo cliente se quejó de la URL incorrecta:

[remote "composer"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/composer/*

Entonces agregué el pushurlparámetro al viejo control remoto:

[remote "composer"]
    url = git://github.com/user/repo.git
    fetch = +refs/heads/*:refs/remotes/composer/*
    pushurl = [email protected]:user/repo.git
Peter Mortensen
fuente
1

Este error ocurre cuando clonas un repositorio usando una llamada como:

git clone git://github.com/....git

Esto esencialmente lo configura como un usuario de solo extracción, que no puede acelerar los cambios.

Lo arreglé abriendo el .git/configarchivo de mi repositorio y cambiando la línea:

[remote "origin"]
    url = git://github.com/myusername/myrepo.git

a:

[remote "origin"]
    url = ssh+git://[email protected]/myusername/myrepo.git

Este ssh+gitprotocolo con el gitusuario es el mecanismo de autenticación preferido por Github.

Las otras respuestas mencionadas aquí funcionan técnicamente, pero todas parecen pasar por alto ssh, lo que requiere que ingrese manualmente una contraseña, que probablemente no desee.

Cerin
fuente
0

Agregué mi pubkey a github.com y esto fue exitoso:

ssh -T [email protected]

Pero recibí el error "No puedes empujar" después de haber hecho esto incorrectamente:

git clone git://github.com/mygithubacct/dotfiles.git
git remote add origin [email protected]:mygithubacct/dotfiles.git
...edit/add/commit
git push origin master

En lugar de hacer lo que debería haber hecho:

mkdir dotfiles
cd dotfiles
git init
git remote add origin [email protected]:mygithubacct/dotfiles.git
git pull origin master
...edit/add/commit
git push origin master
rshdev
fuente
0

Para establecer httpsglobalmente en lugar de git://:

git config --global url.https://github.com/.insteadOf git://github.com/
tokhi
fuente
0

Los siguientes cmnds solucionarán el problema.

 git pull --rebase
 git push
Hariharan AR
fuente
-1

La forma más rápida de superarlo es reemplazarlo origincon la sugerencia que da.

En lugar de git push origin masterusar:

git push [email protected]:my_user_name/my_repo.git master
Tiberiu Craciun
fuente