Git d'erreur: RPC a échoué; résultat=22, HTTP code = 404
Je suis en utilisant SourceTree sur OSX et l'utilisation de Git pour le pousser à Visual Studio Online. J'obtiens l'erreur suivante:
POST git-receive-pack (490857233 octets)
erreur: RPC a échoué; résultat=22, HTTP code = 404
fatal: L'extrémité distante accroché de façon inattendue
Tout à jour
Terminée avec des erreurs, voir ci-dessus
J'ai déjà essayé le suivant:
git config --global http.postBuffer 524288000
HTTP 404 est "fichier non trouvé", et indique que votre adresse n'est pas correcte. Pouvez-vous poster l'URL que vous essayez de pousser? Pouvez-vous poster une capture d'écran de VSO, avec le "clone" URL de l'onglet étendu?
On pourrait le penser, mais si vous effacer la mémoire tampon d'annuler, les 404 s'en va et vous simplement obtenir une hungup erreur
J'ai couru dans une semblable erreur due à une mauvaise URL git:
On pourrait le penser, mais si vous effacer la mémoire tampon d'annuler, les 404 s'en va et vous simplement obtenir une hungup erreur
J'ai couru dans une semblable erreur due à une mauvaise URL git:
https://.../foo
au lieu de https://.../foo.git
OriginalL'auteur guinzu | 2015-09-11
Vous devez vous connecter pour publier un commentaire.
Je viens de tomber sur un très semblables d'erreur (pour qui cette réponse est à la tête des résultats sur google) - la solution était dans un commentaire de @Liviu Chircu
La solution était de mettre le
.git
sur la fin de l'urlCependant:
réussi.
La chose étrange est que l'URL d'origine sans
.git
réussi sur les deux machines linux et windows desktop, mais a échoué sur une troisième machine linux. Y compris.git
permet de travailler sur toutes les machines.git config --global http.postBuffer 524288000
ne fonctionne pas.OriginalL'auteur user2711915
Votre dépôt peut être trop grand, Essayez de télécharger en morceaux, comme l'utilisation de GIT pour revenir à la moitié de l'histoire dans une nouvelle direction, poussez, poussez ensuite les derniers commits.
Probablement une meilleure solution, mais c'est ce que j'ai pu faire pour résoudre rapidement mon problème
J'ai été en mesure de pousser 108.61 MiB, mais pas 144.64 MiB
Espère que cette aide.
OriginalL'auteur Oxymoron
Juin 2016 mise à Jour: Selon cette page:
Je vous recommande de passer à la connexion SSH si vous en êtes capable, parce que cela devrait éviter ce problème tout à fait. (Notez que vous êtes en mesure d'utiliser le protocole HTTPS et SSH en tandem, même sur la même machine.)
Si cela n'a pas été activé pour vous ou que vous êtes incapable de passer à SSH, continuez à lire.
Original Post:
@Oxymore mentionné, le problème est que votre dépôt est trop grande, ou plus précisément, vous êtes en essayant de pousser trop à la fois.
Ça n'a pas de sens pour moi. *les reflets dans Microsoft direction générale*
Vous avez probablement déjà rencontré ce et eu une erreur comme ceci:
Et c'est probablement ce qui vous a amené à faire de la
git config
de commande que vous avez mentionné.Maintenant pour le but de mon affichage distinct réponse: je tiens à préciser comment vous pouvez résoudre ce problème. Vous pourrez toujours essayer de pousser un plus petit ensemble de commits à un moment, mais ce n'est pas toujours aussi facile qu'il y paraît. Voici le processus:
Déterminer combien s'engage à effectuer à un moment. Je vous recommande habituellement une recherche binaire pour déterminer combien vous pouvez vous pousser, mais cela peut être difficile parce que le temps d'attente entre les pousse. Aussi, beaucoup de repos ont un très grand premier commit, ou certains s'engage après qui sont très grandes. Si vous connaissez de tels engage, d'essayer de pousser ceux qui par eux-mêmes. Si votre pension est assez petit, il pourrait être plus facile de simplement pousser un commit à la fois. Sinon, essayez de pousser 20-30 s'engage, de diminuer le nombre si vous avez des questions.
En supposant que vous avez une branche,
master
, créer une nouvelle branche à la même place, par exemple,master-temp
.Réinitialiser
master
pour le dernier commit dans le premier groupe que vous souhaitez lancer. E. g.git reset --hard master-temp~100
.Push qui s'engagent (
git push
).Faire un
--ff
de fusion lors de la dernière livraison du groupe suivant. (git merge --ff-only master-temp~90
)Répétez les étapes 4 et 5 jusqu'à ce que tous les commits sont poussés.
Considérez, par exemple, ce repo:
C'est ce que vous allez faire, en supposant que vous voulez pousser un commit à la fois:
Idéalement, cela fonctionne bien, et vous avez terminé. Mais ce qui se passe si une validation donnée ne peut pas être poussé, même si c'est le seul commit, vous sont en train de pousser? Tout d'abord, essayer de pousser une fois ou deux fois de plus; il semble y avoir une incohérence dans la façon dont beaucoup qu'il prend à l'échec de la push.
Si elle persiste à ne pas pousser, alors il est temps de réécrire l'histoire.
Ne vous inquiétez pas, vous aurez toujours votre histoire originale lorsque vous avez terminé.
Retour à l' (mise à jour) exemple repo:
(Le massif de commettre peut être n'importe où, ou il peut y avoir plus d'un.)
L'idée générale est, vous faire un rebase interactif (
git rebase -i
) à diviser le massif s'engager dans un peu plus petits.Remarque: Le
--root
n'est nécessaire que si vous avez besoin de partager la première validation. Sinon par exemplegit rebase -i bbbbbbb
.Changer le commit que vous voulez à se séparer de
pick
àedit
.Maintenant c'est où le
magitmagie opère:La dernière commande va réussir, parce que Git est assez intelligent pour réutiliser les articles que vous avez déjà poussé, même si ils sont dans un autre commit. (Notez que le
Analyzing objects
étape est celle qui est la plus longue. C'est Git calculer combien il peut réutiliser, et combien il doit télécharger.) Si vous êtes intéressé à en apprendre davantage sur la façon dont cela fonctionne, découvrez la Packfiles section du Git Internes docs, peut-être, après le brossage sur Les Objets Git.Ai-je mentionné que Git est génial?
OriginalL'auteur Scott Weldon