Eu tenho usado o git para manter duas cópias do meu projeto sincronizadas, uma é a minha caixa local e a outra o servidor de teste. Esse é um problema que ocorre quando eu faço logon no servidor de desenvolvimento 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.
(os nomes dos arquivos foram alterados para proteger os culpados ...!)
Ambas as caixas executam o Solaris 10 AMD. Eu fiz algumas pesquisas, se eu adicionar --upload-pack=$(which git-upload-pack)
o comando funciona (e prova que $PATH
contém o caminho para 'git-upload-pack' conforme a solução RTFM), mas isso é realmente irritante, mais 'git push' não funciona, porque não acho que exista uma --unpack=
opção.
Aliás, todos os comandos git funcionam bem na minha caixa local, é a mesma versão do software (1.5.4.2), instalada na mesma montagem NFS em /usr/local/bin
.
Alguém pode ajudar?
fonte
/opt/local/bin
. Adicionando isso à minha.bashrc
viaPATH=$PATH:/new/path/here
funcionou para mim."ssh .. echo \$PATH"
comando irá mostrar-lhe o caminho na máquina remota, que pode ser diferente ao seu caminho de login, mas isso é a coisa crucial para obter direito de fazê-lo funcionar, e você pode fazer isso através da criação PATH para incluir git na.bashrc
na máquina remota. De acordo com a página de manual,.profile
/.bash_profile
são lidos apenas para logins interativos.Você também pode usar a opção "-u" para especificar o caminho. Acho isso útil em máquinas onde meu .bashrc não é obtido em sessões não interativas. Por exemplo,
fonte
Com base na resposta de Brian , o caminho do pacote de upload pode ser definido permanentemente executando os seguintes comandos após a clonagem, o que elimina a necessidade de
--upload-pack
solicitações subsequentes de recebimento / retirada. Da mesma forma, a configuração do pacote de recebimento elimina a necessidade de--receive-pack
solicitações push.Esses dois comandos são equivalentes a adicionar as seguintes linhas a um repo
.git/config
.Usuários frequentes de
clone -u
podem estar interessados nos seguintes aliases. myclone deve ser auto-explicativo. myfetch / mypull / mypush pode ser usado em repositórios cuja configuração não foi modificada conforme descrito acima, substituindogit push
porgit mypush
, e assim por diante.fonte
--receive-pack
opçãogit-push
!git push --receive-pack /full/path/to/git-receive-pack
por conta própria, ajuste até obter êxito e modifique .git / config (ou execute "git config") para definir permanentemente o caminho do pacote de recebimento.Encontrei e usei (com êxito) esta correção:
Graças a Paul Johnston .
fonte
O Mac OS X e alguns outros Unixes têm pelo menos o caminho do usuário compilado no sshd por motivos de segurança, para que aqueles que instalam o git como / usr / local / git / {bin, lib, ...} possam ter problemas, pois o git executáveis não estão no caminho pré-compilado. Para substituir isso, prefiro editar minha alteração do / etc / sshd_config:
para
e crie arquivos ~ / .ssh / environment conforme necessário. Meus usuários git têm o seguinte em seu arquivo ~ / .ssh / environment:
Observe que a expansão da variável não ocorre quando o arquivo ~ / .ssh / environment é lido, portanto:
não funciona.
fonte
A solução de Matt não funcionou para mim no OS X, mas a de Paul funcionou.
A versão curta do link de Paul é:
Criado
/usr/local/bin/ssh_session
com o seguinte texto:Executar:
Adicione o seguinte a
/etc/sshd_config
:fonte
Para o bash, ele precisa ser colocado em .bashrc e não em .bash_profile (.bash_profile também é apenas para shells de login).
fonte
Eu recebi esses erros com a versão MsysGit.
Depois de seguir todos os conselhos que encontrei aqui e em outros lugares, acabei:
no servidor (Win XP com Cygwin SSHD), isso finalmente foi corrigido.
Eu ainda uso o lado do cliente da versão MsysGit
Eu suspeito que ainda é necessário algum trabalho deste lado do uso do Git .. (ssh + facilidade de puxar / empurrar no Windows)
fonte
Como Johan apontou muitas vezes, seu .bashrc é necessário:
ln -s .bash_profile .bashrc
fonte
Você deve adicionar o
antes desta linha no .bashrc:
Caso contrário, todas as instruções de exportação não serão executadas ( veja aqui ).
fonte
Meu caso está no Win 10 com o GIT bash e não tenho um GIT no local padrão. Em vez disso, tenho o git em / app / local / bin. Usei os comandos fornecidos pelo @Garrett, mas preciso alterar o caminho para começar com o dobro /:
Caso contrário, o GIT adicionará o caminho do Windows GIT na frente.
fonte
Para o zsh, você precisa colocá-lo neste arquivo: ~ / .zshenv
Por exemplo, no OS X usando o pacote git-core do MacPorts:
$ echo 'exportar PATH = / opt / local / sbin: / opt / local / bin: $ PATH'> ~ / .zshenv
fonte
Estou tendo problemas para conectar-me a um repositório Gitolite usando SSH do Windows e o problema foi PLINK! Ele ficava me pedindo uma senha, mas o ssh gitolite @ [host] retornava a lista de recompra.
Verifique sua variável de ambiente: GIT_SSH. Se estiver definido como Plink, tente-o sem nenhum valor ("defina GIT_SSH =") e veja se isso funciona.
fonte
Adicione o local do seu
git-upload-pack
arquivo .bashrc do usuário remoto do git.fonte
Pode ser tão simples quanto instalar o git no host remoto (como no meu caso).
Ou equivalente para outros sistemas de gerenciamento de pacotes.
fonte