2011-12-06 1 views
19

Lorsque vous essayez de cloner ne importe quel référentiel via https à partir de GitHub, nous obtenons:git derrière proxy: HEAD fait référence à distance ref inexistant, pas à la caisse

git clone https://github.com/rails/rails.git 
Cloning into rails... 
remote HEAD refers to nonexistent ref, unable to checkout 

Notre serveur est derrière un proxy. Nous avons défini http_proxy et https_proxy de manière appropriée. Toutes les autres fonctions fonctionnent.

version git est 1.7.5.4

Server est Ubuntu Server 11.04.

Notez que puisque cela se produit avec TOUS les référentiels github que nous avons essayés, nous croyons fermement que ce n'est pas un problème avec les références dans le référentiel. Nous avons essayé des dépôts aussi connus que jquery et rails - si le problème était dans ces dépôts, il y aurait beaucoup de gens qui se plaindraient. Je crois fermement que le problème est avec git et le proxy, mais tout mon googling n'a pas conduit à une solution. En tant que point de données supplémentaire, les clones semblent fonctionner correctement s'ils sont en http. Seuls les clones https échouent avec cette erreur.

Notez que je ne pense pas que cette question soit un doublon, puisque les autres questions avec cette erreur se concentrent sur des problèmes avec le dépôt - ne fonctionnant pas avec git et un proxy.

Répondre

19

Je suis tombé sur la solution à ce problème via ce post:

http://comments.gmane.org/gmane.comp.version-control.git/185459

La question est apparemment un bug dans la version libcurl installée dans le serveur Ubuntu 11.04. Lancer simplement apt-get install libcurl3-gnutls n'était pas suffisant pour résoudre le problème car il indiquait simplement que la dernière version était déjà installée.

Pour résoudre le problème, je devais installer manuellement les derniers libcurl3-gnutls, et deux dépendances, comme on le voit ci-dessous (évidemment, après les avoir téléchargés sur mon premier système):

sudo dpkg -i libp11-kit0_0.6-0ubuntu2_amd64.deb 
sudo dpkg -i libgnutls26_2.12.14-3_amd64.deb 
sudo dpkg -i libcurl3-gnutls_7.22.0-3ubuntu1_amd64.deb 

Hope this helps Quelqu'un.

+0

cela a fonctionné très bien pour moi, a tiré les paquets de la mise en pension pour précis. – jhogendorn

+0

Travaillé ici, même si j'ai reçu le message d'erreur suivant: "p11-kit: impossible de charger le module: /usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so:/usr/lib/x86_64-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type ". [Rapporté à Ubuntu.] (Https://bugs.launchpad.net/ubuntu/+source/curl/+bug/940431) – l0b0

+0

dpkg: erreur de traitement libcurl3-gnutls_7.22.0-3ubuntu4_amd64.deb (--install): l'architecture du paquet (amd64) ne correspond pas au système (i386). Cool. Pourriez-vous poster les solutions 32 bits aussi. J'ai effectivement utilisé la solution d'Alexey Romanov. –

10

les paquets mentionnés ci-dessus peuvent être trouvés ici:

J'ai utilisé ces versions et a été en mesure d'utiliser git derrière un proxy sans problème:

$ sudo dpkg -i libp11-kit0_0.10-1_amd64.deb libgnutls26_2.12.14-5ubuntu2_amd64.deb libcurl3-gnutls_7.22.0-3ubuntu2_amd64.deb 
9

Une solution trouvée au bug Ubuntu lié:

ajouter ce qui suit à ~/.gitconfig ou/etc/gitconfig

# Workaround for bug when using SSL and HTTP proxy (LP #940431) 
[url "http://"] 
insteadOf = "https://" 

commençant par 12.04 plus nécessaires.

Questions connexes