J'ai essayé de revenir à un commit git précédent avec :
git revert xxx
Je reçois maintenant cette erreur en réponse :
fatal: mauvais objet xxx
Qu'est-ce que je fais de travers ? Comment puis-je corriger cela ?
J'ai essayé de revenir à un commit git précédent avec :
git revert xxx
Je reçois maintenant cette erreur en réponse :
fatal: mauvais objet xxx
Qu'est-ce que je fais de travers ? Comment puis-je corriger cela ?
Je ne connais pas la raison exacte pour laquelle cela se produit. Pour moi, c'est parce que j'oublie de tirer l'ensemble du dépôt sur mon ordinateur local. J'ai 2 chemins ou plus, et chaque chemin tire d'une branche différente
/chemin/branche_a/ -> tiré de la branche A
/chemin/branche_b/ -> tiré de la branche B
sur la branche A, j'ai apporté quelques modifications et j'ai validé comme d'habitude. Je veux que ce commit (par exemple l'ID du commit est abcdef123
) apparaisse sur la branche B, donc j'utilise
$ cd /chemin/branche_b/
$ git branch
master
branche_a
* branche_b
$ git cherry-pick abcdef123
Cela me donne ce genre d'erreur. Donc j'ai besoin de tirer l'ensemble du dépôt avant d'obtenir ce commit
$ git pull
remote: Comptage des objets: 257, fait.
remote: Compression des objets: 100% (58/58), fait.
remote: Total 216 (delta 187), réutilisé 186 (delta 158)
Réception des objets: 100% (216/216), 53.13 Kio | 43 Kio/s, fait.
Résolution des deltas: 100% (187/187), terminé avec 38 objets locaux.
Depuis github.com:nom_utilisateur/mon_depot
abcdef3..80c0d68 branche_a -> origine/branche_a
Déjà à jour.
$ git cherry-pick abcdef123
[branche_b ccddeef] Quelques messages de commit
1 fichier modifié, 1 insertion(+), 1 suppression(-)
[Édition 1, 19 novembre 2016] Bien que cela indique parfois une corruption du dépôt, il s'avère que cela se produit sur Windows lorsque certaines commandes - généralement, un autre Git dans une autre tâche - tiennent des fichiers internes ouverts et verrouillés. Dans ce cas, la terminaison de l'autre tâche devrait régler le problème. La réponse originale est ci-dessous.
[Édition 2, 6 mai 2020] Supposons que xxx
ci-dessus ressemble, par exemple, à b34789c0b0d3b137f0bb516b417bd8d75e0cb305
(un identifiant de hachage brut). Si vous l’avez obtenu en le copiant-collant, assurez-vous qu'il s'agit de ce dépôt (il est facile de récupérer un identifiant de hachage à partir d'un autre dépôt sans s'en rendre compte, surtout si vous avez plusieurs fenêtres ouvertes). Si vous l'avez retapé vous-même, assurez-vous qu'il n'y a pas de fautes de frappe. S'il s'agit de sous-modules, assurez-vous que le sous-module est à jour. Consultez les commentaires sur la question et certaines des réponses, y compris celle-ci.
mauvais objet
avec un nombre hexadécimal tend à signifier qu'une balise possède un numéro de référence non valide, mais peut également se produire dans quelques autres cas étranges. Par exemple, si je fais un :
$ git tag foo
$ vi .git/refs/tags/foo
et que je change le dernier caractère (dans ce cas, de 6 à 5) et l'enregistre :
$ git log foo
fatal: mauvais objet foo
Que représente exactement le xxx
ici et d'où provient-il ?
Je viens de rencontrer la même erreur (mauvais objet [hash]) en essayant de fusionner à partir d'une branche que mon client ne connaissait pas. (Similaire au cas de PrzeoR, mais au lieu d'avoir besoin d'un pull j'ai dû fetch)
Dans mon cas, j'ai dû exécuter git fetch pour resynchroniser mon client avec l'état du serveur. Je poste ceci ici au cas où quelqu'un arriverait sur ce fil de discussion de la même manière que moi et pourrait bénéficier de cette information.
git pull
git cherry-pick [hash]
fatal: mauvais objet [hash]
git fetch
remote: Comptage des objets: 8, terminé. (etc.)
Depuis github.com:repo/branch
* [nouvelle branche] branchname
git cherry-pick [hash]
[réussite]
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.