git push error git-receive-pack

Tengo dos repositorys git en diferentes networkinges. Me había estado comunicando entre los dos sin problemas, pero por alguna razón hoy cuando estoy haciendo un "git push", me aparece el siguiente error:

---------------------------------------------- bash: git-receive-pack: command not found fatal: The remote end hung up unexpectedly ---------------------------------------------- 

Busqué en Google y me aseguré de que el "/ usr / local / bin" estaba en mi "$ PATH". Aquí está el resultado del directory bin de mi git:

 [pradeep@laptop ]$ls -l /usr/local/git/bin/ total 16760 -rwxr-xr-x 1 root wheel 4329416 Mar 26 20:06 git* -rwxr-xr-x 1 root wheel 14852 Mar 26 20:06 git-cnetworkingential-osxkeychain* -rwxr-xr-x 2 root wheel 162402 Mar 26 20:06 git-cvsserver* lrwxr-xr-x 1 root wheel 3 Apr 3 11:02 git-receive-pack@ -> git -rwxr-xr-x 2 root wheel 1830248 Mar 26 20:06 git-shell* lrwxr-xr-x 1 root wheel 3 Apr 3 11:02 git-upload-archive@ -> git -rwxr-xr-x 2 root wheel 1893064 Mar 26 20:06 git-upload-pack* -rwxr-xr-x 1 root wheel 333121 Mar 26 20:06 gitk* 

¿Alguna idea de lo que podría estar yendo mal?

Gracias

————– Editar ——————- Tengo la siguiente línea en el ".bashrc" de mi sistema remoto:

 export PATH=$LOCAL/git-1.8/bin/:$PATH 

Esta es la salida en la máquina remota:

 $ls $LOCAL/git-1.8/bin git git-cvsserver gitk git-receive-pack git-shell git-upload-archive git-upload-pack 

Y esta es la salida cuando hago "ssh user @ remote env" desde mi máquina a la máquina remota:

 [pradeep@laptop ~]$ssh k00603@k.rics.riken.jp env SHELL=/bin/bash SSH_CLIENT=153.133.52.171 52379 22 USER=k00603 MAIL=/var/mail/k00603 PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/openssh/bin PWD=/volume2/home/hp120242/k00603 SHLVL=1 HOME=/home/hp120242/k00603 LOGNAME=k00603 SSH_CONNECTION=153.133.52.171 52379 10.7.160.4 22 LC_CTYPE=en_US.UTF-8 _=/bin/env 

La ruta de acceso de git falta en el bash.

Editar: El siguiente es el ".bash_profile" en el directory de inicio de mi sistema remoto:

 # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:$LOCAL/git-1.8/bin export PATH 

Cuando ingresas a un recuadro y recibes un post, en realidad estás pasando por un process ligeramente diferente que cuando ejecutas un command. Las shells tienen reglas sobre qué configuration se obtiene en function de si se trata de un shell de inicio de session y / o si se trata de una session interactiva. Intenta ejecutar:

 ssh user@host env 

Esto imprimirá su entorno tal como lo ve una session de inicio de session no interactiva. Supongo que /usr/local/git/bin no está en la ruta en este escenario. Puede --receive-pack esto utilizando la opción --receive-pack para git push :

 git push --receive-pack=/path/to/git-receive-pack 

/path/to/git-receive-pack es la ruta en la máquina remota . Le dice a git dónde encontrar el otro extremo cuando ingresa al control remoto.

La mejor respuesta es arreglar la configuration de su shell, pero eso puede ser complicado dependiendo del shell. Principalmente uso ZSH, y lo soluciono configurando un ~/.zshenv , que obtiene ZSH en un shell no interactivo. Creo que las cosas tienden a ser less claras con bash. Puede que tenga que editar su ~/.bashrc y / o su ~/.bash_profile .

Asumiendo que tienes una installation Linux vainilla en el extremo remoto (que probablemente sea el caso), y que esté ejecutando el shell bash, la solución más fácil es cambiar tu .bashrc . Edite ~/.bashrc , y agregue:

 export PATH=/path/to/your/installed/git/bin:$PATH 

Donde /path/to/your/installed/git/bin es donde instaló git en su directory de inicio. Tiendo a instalar localmente en ~/.local/bin , así que el mío se vería así:

 export PATH=$HOME/.local/bin:$PATH 

Tu puede ser simplemente:

 export PATH=$HOME/bin:$PATH 

No dices la location, así que no puedo darte la formulación correcta.

En la mayoría de los sistemas, .bashrc se obtiene incluso cuando se proporciona un command a ssh. Después de realizar este cambio, intente ejecutar ssh user@host env nuevamente. Debería ver su location de la carpeta bin que contiene el git binary en la variable de ruta. Debería poder hacer algo como ssh user@host git --version y ver algo como:

 git version 1.8.2 

Si ve un error, es probable que no haya escrito la ruta correctamente, o .bashrc no se recoge cuando ingresa a la máquina.

Muestra .profile

 # if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi # set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi 

--receive-pack automático --receive-pack

Suponiendo que su control remoto se llame origin , puede hacer esto:

 git config --local remote.origin.receivepack \ /path/to/git-receive-pack/on/the/remote 

Es posible que tengas que arreglar el package de carga también:

 git config --local remote.origin.uploadpack \ /path/to/git-upload-pack/on/the/remote