He estado usando git para mantener sincronizadas dos copias de mi proyecto, una es mi caja local y la otra el servidor de prueba. Este es un problema que ocurre cuando inicio sesión en nuestro servidor de desarrollo remoto usando ssh;
git clone [email protected]:/home/chris/myproject
Initialized empty Git repository in /tmp/myproject/.git/
Password:
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly
fetch-pack from '[email protected]:/home/chris/myproject' failed.
(¡los nombres de los archivos se han cambiado para proteger al culpable ...!)
Ambas cajas ejecutan Solaris 10 AMD. He cavado un poco, si agrego --upload-pack=$(which git-upload-pack)
el comando funciona (y demuestra que $PATH
contiene la ruta a 'git-upload-pack' según la solución RTFM) pero esto es realmente molesto, además de 'git push' no funciona, porque no creo que haya una --unpack=
opción
Por cierto, todos los comandos git funcionan bien desde mi caja local, es la misma versión del software (1.5.4.2), instalada en el mismo soporte NFS en /usr/local/bin
.
¿Alguien puede ayudar?
fuente
/opt/local/bin
. Agregar esto a mi.bashrc
víaPATH=$PATH:/new/path/here
funcionó para mí."ssh .. echo \$PATH"
comando le mostrará la ruta en la máquina remota, que puede ser diferente a su ruta de inicio de sesión, pero esto es lo más importante para hacer que funcione, y puede hacerlo configurando PATH para incluir git en.bashrc
el máquina remota Según la página de manual,.profile
/.bash_profile
solo se leen para inicios de sesión interactivos.También puede usar la opción "-u" para especificar la ruta. Esto me resulta útil en máquinas donde mi .bashrc no se obtiene en sesiones no interactivas. Por ejemplo,
fuente
Sobre la base de la respuesta de Brian , la ruta del paquete de carga se puede establecer de forma permanente ejecutando los siguientes comandos después de la clonación, lo que elimina la necesidad de
--upload-pack
solicitudes posteriores de extracción / extracción. Del mismo modo, configurar el paquete de recepción elimina la necesidad de--receive-pack
solicitudes push.Estos dos comandos son equivalentes a agregar las siguientes líneas a un repositorio
.git/config
.Los usuarios frecuentes de
clone -u
pueden estar interesados en los siguientes alias. myclone debería explicarse por sí mismo. myfetch / mypull / mypush se puede usar en repos cuya configuración no se ha modificado como se describió anteriormente al reemplazargit push
congit mypush
, y así sucesivamente.fuente
--receive-pack
opcióngit-push
!git push --receive-pack /full/path/to/git-receive-pack
por sí mismo, modifique hasta que tenga éxito, luego modifique .git / config (o ejecute "git config") para establecer permanentemente la ruta del paquete de recepción.Encontré y usé (con éxito) esta solución:
Gracias a Paul Johnston .
fuente
Mac OS X y algunos otros Unix al menos tienen la ruta de usuario compilada en sshd por razones de seguridad para que aquellos de nosotros que instalemos git como / usr / local / git / {bin, lib, ...} puedan tener problemas como git los ejecutables no están en la ruta precompilada. Para anular esto, prefiero editar mi / etc / sshd_config change:
a
y luego cree archivos ~ / .ssh / environment según sea necesario. Mis usuarios de git tienen lo siguiente en su archivo ~ / .ssh / environment:
Tenga en cuenta que la expansión variable no se produce cuando el archivo ~ / .ssh / environment se lee así:
no trabajará.
fuente
La solución de Matt no funcionó para mí en OS X, pero la de Paul sí.
La versión corta del enlace de Paul es:
Creado
/usr/local/bin/ssh_session
con el siguiente texto:Ejecutar:
Agregue lo siguiente a
/etc/sshd_config
:fuente
Para bash, debe ponerse en .bashrc no .bash_profile (.bash_profile también es solo para shells de inicio de sesión).
fuente
Recibí estos errores con la versión MsysGit.
Después de seguir todos los consejos que pude encontrar aquí y en otros lugares, terminé:
en el servidor (Win XP con Cygwin SSHD), esto finalmente lo solucionó.
Todavía uso el lado del cliente de la versión MsysGit
Sospecho que aún se necesita algo de trabajo en este lado del uso de Git ... (ssh + facilidad de extracción / inserción en Windows)
fuente
Como Johan señaló muchas veces, se necesita su .bashrc:
ln -s .bash_profile .bashrc
fuente
Debes agregar el
antes de esta línea en el .bashrc:
De lo contrario, no se ejecutarán todas las declaraciones de exportación ( ver aquí ).
fuente
Mi caso está en Win 10 con GIT bash y no tengo un GIT en una ubicación estándar. En cambio, tengo git en / app / local / bin. Utilicé los comandos proporcionados por @Garrett pero necesito cambiar la ruta para comenzar con double /:
De lo contrario, el GIT agregará su ruta GIT de Windows al frente.
fuente
Para zsh necesita ponerlo en este archivo: ~ / .zshenv
Por ejemplo, en OS X usando el paquete git-core de MacPorts:
$ echo 'export PATH = / opt / local / sbin: / opt / local / bin: $ PATH'> ~ / .zshenv
fuente
¡He tenido problemas para conectarme a un repositorio de Gitolite usando SSH de Windows y resultó que mi problema era PLINK! Seguía pidiéndome una contraseña, pero ssh gitolite @ [host] me devolvería la lista de repositorios.
Verifique su variable de entorno: GIT_SSH. Si está configurado en Plink, intente sin ningún valor ("set GIT_SSH =") y vea si eso funciona.
fuente
Agregue la ubicación de su
git-upload-pack
al archivo .bashrc del usuario remoto de git.fuente
Puede ser tan simple como instalar git en el host remoto (como en mi caso).
O equivalente para otros sistemas de gestión de paquetes.
fuente