J'utilise git pour synchroniser deux copies de mon projet, l'une est ma boîte locale, l'autre le serveur de test. C'est un problème qui se produit lorsque je me connecte à notre serveur de développement distant en utilisant 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.
(les noms de fichiers ont été modifiés pour protéger les coupables ...!)
Les deux boîtiers exécutent Solaris 10 AMD. J'ai fait quelques recherches, si j'ajoute --upload-pack=$(which git-upload-pack)
la commande fonctionne, (et prouve qu'elle $PATH
contient le chemin vers 'git-upload-pack' selon la solution RTFM) mais c'est vraiment ennuyeux, plus 'git push' ne fonctionne pas, parce que je ne pense pas qu'il y ait une --unpack=
option.
Incidemment, toutes les commandes git fonctionnent correctement à partir de ma boîte locale, c'est la même version du logiciel (1.5.4.2), installée sur le même montage NFS à /usr/local/bin
.
Quelqu'un peut-il aider?
la source
/opt/local/bin
. L'ajout de cela à mon.bashrc
via aPATH=$PATH:/new/path/here
fonctionné pour moi."ssh .. echo \$PATH"
commande vous montrera le chemin sur la machine distante, qui peut être différent de votre chemin de connexion, mais c'est la chose cruciale à faire pour que cela fonctionne, et vous pouvez le faire en définissant PATH pour inclure git dans le.bashrc
sur le machine distante. Selon la page de manuel,.profile
/.bash_profile
ne sont lus que pour les connexions interactives.Vous pouvez également utiliser l'option "-u" pour spécifier le chemin. Je trouve cela utile sur les machines où mon .bashrc ne provient pas de sessions non interactives. Par exemple,
la source
En s'appuyant sur la réponse de Brian , le chemin de téléchargement du pack peut être défini de manière permanente en exécutant les commandes suivantes après le clonage, ce qui élimine le besoin de
--upload-pack
requêtes d'extraction / extraction ultérieures. De même, la configuration de receive-pack élimine le besoin de--receive-pack
demandes push.Ces deux commandes sont équivalentes à l'ajout des lignes suivantes à un dépôt
.git/config
.Les utilisateurs fréquents de
clone -u
peuvent être intéressés par les alias suivants. myclone doit être explicite. myfetch / mypull / mypush peut être utilisé sur les dépôts dont la configuration n'a pas été modifiée comme décrit ci-dessus en remplaçantgit push
pargit mypush
, et ainsi de suite.la source
--receive-pack
option àgit-push
!git push --receive-pack /full/path/to/git-receive-pack
par vous-même, ajustez jusqu'à ce que cela réussisse, puis modifiez .git / config (ou exécutez "git config") pour définir définitivement le chemin du pack de réception.J'ai trouvé et utilisé (avec succès) ce correctif:
Merci à Paul Johnston .
la source
Mac OS X et certains autres Unix ont au moins le chemin utilisateur compilé dans sshd pour des raisons de sécurité, donc ceux d'entre nous qui installent git comme / usr / local / git / {bin, lib, ...} peuvent rencontrer des problèmes en tant que git les exécutables ne se trouvent pas dans le chemin précompilé. Pour remplacer cela, je préfère modifier mon / etc / sshd_config en changeant:
à
puis créez les fichiers ~ / .ssh / environnement selon vos besoins. Mes utilisateurs git ont ce qui suit dans leur fichier ~ / .ssh / environnement:
Notez que l'expansion des variables ne se produit pas lorsque le fichier ~ / .ssh / environment est lu ainsi:
ne fonctionnera pas.
la source
La solution de Matt n'a pas fonctionné pour moi sur OS X, mais celle de Paul.
La version courte du lien de Paul est:
Créé
/usr/local/bin/ssh_session
avec le texte suivant:Exécuter:
Ajoutez ce qui suit à
/etc/sshd_config
:la source
Pour bash, il doit être placé dans .bashrc et non dans .bash_profile (.bash_profile est également uniquement pour les shells de connexion).
la source
J'ai eu ces erreurs avec la version MsysGit.
Après avoir suivi tous les conseils que j'ai pu trouver ici et ailleurs, je me suis retrouvé:
sur le serveur (Win XP avec Cygwin SSHD), cela l'a finalement corrigé.
J'utilise toujours le côté client de la version MsysGit
Je soupçonne que du travail est encore nécessaire de ce côté de l'utilisation de Git. (Ssh + facilité de pull / push sous Windows)
la source
Comme Johan l'a souligné à plusieurs reprises, son .bashrc est nécessaire:
ln -s .bash_profile .bashrc
la source
Vous devez ajouter le
avant cette ligne dans le .bashrc:
Sinon, toutes les instructions d'exportation ne seront pas exécutées ( voir ici ).
la source
Mon cas est sur Win 10 avec GIT bash et je n'ai pas de GIT sous l'emplacement standard. Au lieu de cela, j'ai git sous / app / local / bin. J'ai utilisé les commandes fournies par @Garrett mais je dois changer le chemin pour commencer par double /:
Sinon, le GIT ajoutera votre chemin Windows GIT à l'avant.
la source
Pour zsh, vous devez le mettre dans ce fichier: ~ / .zshenv
Par exemple, sur OS X en utilisant le package git-core de MacPorts:
$ echo 'export PATH = / opt / local / sbin: / opt / local / bin: $ PATH'> ~ / .zshenv
la source
J'ai eu des problèmes de connexion à un référentiel Gitolite en utilisant SSH à partir de Windows et il s'est avéré que mon problème était PLINK! Il n'arrêtait pas de me demander un mot de passe, mais le ssh gitolite @ [host] renverrait la liste des dépôts très bien.
Vérifiez votre variable d'environnement: GIT_SSH. S'il est défini sur Plink, essayez-le sans aucune valeur ("set GIT_SSH =") et voyez si cela fonctionne.
la source
Ajoutez l'emplacement de votre
git-upload-pack
au fichier .bashrc de l'utilisateur git distant.la source
Cela peut être aussi simple que d'installer git sur l'hôte distant (comme c'était le cas dans mon cas).
Ou équivalent pour d'autres systèmes de gestion de paquets.
la source