tipos tag remove practices etiquetas crear best git github

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/



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 .