Intentar algo así git clone git://github.com/ry/node.git
no funcionará, da como resultado:
Initialized empty Git repository in /home/robert/node/.git/
github.com[0: 207.97.227.239]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)
Sin embargo, la clonación sobre HTTP funciona bien. Hasta ahora he deducido que es un problema con el protocolo, pero estoy tratando de instalar cloud9 que requiere el comando
git submodule update --init --recursive
que intenta usar el protocolo git: // y falla. ¿Hay alguna manera de cambiar cómo funcionará ese comando o algo así?
git config --global url.https://.insteadOf git://
Respuestas:
Si este es un problema con su firewall bloqueando el puerto git: protocol (9418), entonces debe hacer un cambio más persistente para que no tenga que acordarse de emitir comandos sugeridos por otras publicaciones para cada repositorio git.
La siguiente solución también funciona para submódulos que también podrían estar usando el protocolo git:.
Dado que el mensaje git realmente no apunta inmediatamente al firewall que bloquea el puerto 9418, intentemos diagnosticar esto como el problema real.
Diagnosticando el problema
Referencias: https://superuser.com/q/621870/203918 y https://unix.stackexchange.com/q/11756/57414
Hay varias herramientas que podemos usar para determinar si el firewall está causando nuestro problema: use la que esté instalada en su sistema.
Bien, ahora que hemos determinado que nuestro firewall está bloqueado por un firewall, ¿qué podemos hacer al respecto? Sigue leyendo :)
Reescritura básica de URL
Git proporciona una forma de reescribir URL usando
git config
. Simplemente emita el siguiente comando:Ahora, como por arte de magia, todos los comandos git realizarán una sustitución de
git://
ahttps://
¿Qué cambios hizo este comando?
Eche un vistazo a su configuración global utilizando:
Verá la siguiente línea en la salida:
Puede ver cómo se ve esto en el archivo, echando un vistazo a
~/.gitconfig
dónde debería ver ahora que se han agregado las siguientes dos líneas:¿Quieres más control?
Simplemente use una URL más completa / específica en el reemplazo. Por ejemplo, para que solo las URL de GitHub usen https: // en lugar de git: //, puede usar algo como:
Puede ejecutar este comando varias veces utilizando diferentes reemplazos. Sin embargo, en el caso de que una URL coincida con múltiples reemplazos, la coincidencia más larga "gana". Solo se realizará un reemplazo por URL.
Cambios en todo el sistema para administradores de sistemas
Si eres un administrador de sistemas Linux y no quieres que tus usuarios tengan que pasar por los dolores anteriores, puedes hacer un cambio rápido de configuración de git en todo el sistema.
Simplemente edite o agregue los siguientes contenidos
/etc/gitconfig
y listo, sus usuarios no tienen que preocuparse por nada de lo anterior:fuente
git config --global url."https://github".insteadOf git://github
.git config --global --unset url."https://".insteadOf
Github también proporciona acceso a http (s), que es mucho menos probable que sea bloqueado por su empresa. Para decirle al submódulo que use eso, puede hacer esto:
Esto es exactamente por qué init y update son comandos separados: puede iniciar, personalizar ubicaciones y luego actualizar.
update --init
es solo un acceso directo para cuando no necesite personalizar ninguna URL.Para cualquier otra persona que pase por esto, también podría usar una URL ssh (si su empresa bloquea git: // pero no ssh), pero en este caso el OP presumiblemente no tiene acceso SSH al repositorio remoto.
fuente
sed -i 's@git://github@https://github@' .git/config
.Otra opción que no implica tocar git config es cambiar la configuración de ssh para usar el puerto 443 en lugar del puerto 22 normal.
Referencia: Uso de SSH sobre el puerto HTTPS
De ese artículo:
Después, pude exitosamente darle un empujón a Github. En casa, puede volver a cambiar la configuración de ssh a la forma en que era si lo desea.
fuente
También tuve el mismo problema por un tiempo. Luego intenté cambiar la configuración de git usando el comando sugerido:
que desafortunadamente no me sirvió . ¡Todavía tenía el mismo problema!
Lo que realmente resolvió mi problema al fin es que he restablecido la URL remota de mi repositorio nuevamente usando el siguiente comando:
que anteriormente era así:
Después de configurar la URL remota usando en
https://
lugar del[email protected]
problema, se resolvió para mí.fuente
Ampliando la respuesta anterior de Nathan, también puede probar el protocolo ssh si su firewall corporativo está interfiriendo con https. En mi caso, el firewall estaba bloqueando el protocolo git, volviendo a emitir certificados SSL para https y esto me estaba rompiendo la confianza, incluso con la opción estricta-SSL desactivada. Puede hacer una reescritura de URL similar para ssh y crear una clave / par ssh como se describe en github .
También debería activar el ssh-agent para su instalación de git.
fuente
es porque la dirección GIT para el servidor de nodo ha cambiado, debe ingresar ahora:
git clone https://github.com/joyent/node
buena suerte
fuente
Introducción
Agregaré aquí mi propio enfoque ( que no es necesario si tiene un repositorio git de acceso público que admita https ).
Trabajo en una empresa donde solo se puede acceder al repositorio git desde dentro de la empresa. Pero también trabajo desde casa.
¿Cómo llego al repositorio de la empresa desde casa?
He creado un repositorio con una carpeta en mi unidad de google. Excepto git y https, puede incluir repositorios como rutas.
Entonces, en lugar de presionar al origen, presiono a "gDrive". Esto hace que la carpeta se sincronice desde la estación de trabajo de mi casa a la unidad de Google, y luego mi computadora de trabajo extrae los cambios. Además, dado que a veces los archivos en el directorio ".git" no se sincronizan, cambio el nombre de la carpeta temporalmente de, por ejemplo, "trunk" a "trunk2". Esto obliga a que tanto las computadoras del hogar como las del trabajo estén 100% sincronizadas con Google Drive.
Luego inicio sesión en mi computadora de trabajo a través de checkpoint-vpn remote (o teamviewer) y envío mis actualizaciones al repositorio de trabajo git.
Además, el proceso funcionaría viceversa para empujar a un repositorio git fuera de la empresa que está bloqueado.
fuente