tag - Git/GitHub no puede presionar para dominar
git tag best practices (10)
Soy nuevo en Git / GitHub y encontré 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
Agregué mi pubkey a github.com y esto fue exitoso:
ssh -T [email protected]
Pero recibí el error "No se puede enviar" 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
Este error ocurre cuando clonas un repositorio usando una llamada como:
git clone git://github.com/....git
Esto esencialmente te configura como un usuario de solo extracción, que no puede hacer subir los cambios.
Lo arreglé abriendo el archivo .git/config
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 protocolo ssh+git
con el usuario git
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.
GitHub no admite presionar sobre el protocolo de 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.git
o el protocolo "HTTP inteligente" utilizando la URL https://
que GitHub le muestra para tu repositorio
(Actualización: para mi sorpresa, algunas personas aparentemente pensaron que con esto sugería que "https" significa "HTTP inteligente", que yo no era. Git solía tener un protocolo "tonto HTTP" que no permitía empujar antes se introdujo el "HTTP inteligente" que usa GitHub, ya sea que se podría usar sobre http
o https
. Las diferencias entre los protocolos de transferencia utilizados por Git se explican en el siguiente enlace).
Si desea cambiar la URL de origen, puede hacer lo siguiente:
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 .
Hay una solución simple 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
La forma más rápida de superarlo es reemplazar el origin
con la sugerencia que brinda.
En lugar del git push origin master
de git push origin master
, utiliza:
git push [email protected]:my_user_name/my_repo.git master
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 invocación de git remote set-url...
produce el cambio anterior).
Para establecer https
globalmente en lugar de git://
:
git config --global url.https://github.com/.insteadOf git://github.com/
Si vas a http://github.com/my_user_name/my_repo , verás un cuadro de texto donde puedes seleccionar la ruta de acceso de git a tu repositorio. ¡Querrás usar esto!
Tuve este problema después de actualizar el cliente de Git , y de repente mi repositorio no pudo presionar.
Descubrí que un control remoto antiguo tenía el valor incorrecto de la url
, incluso a través de mi control remoto activo tenía el mismo valor para la url
y funcionaba bien.
Pero también estaba el pushurl
, así que agregarlo al antiguo 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 utilizó durante años, 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/*
Así que agregué el pushurl
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
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
Puede usar el git push origin master
.