web-dev-qa-db-fra.com

le statut de git montre fatal: mauvais objet HEAD

J'ai un problème avec git sur Windows Azure. Le statut Git indique - "fatal: mauvais objet HEAD" et j'ai essayé de courir:

 git fsck --full
 git gc

Mais git fsck montre:

broken link from  commit 739df633f185ce5d1ab7eb97d619b28e7d81185a
              to    tree 2a6d4876d135c1fa7cbe1348c62570006e895fc5
broken link from  commit 9c7eae5ffed34dbfac977e515dee675626b59f93
              to    tree 400132d215ab9aced883a9971e648b82624b2032
broken link from  commit 9c7eae5ffed34dbfac977e515dee675626b59f93
              to  commit 4a49af0a0cb64a0a0415734b11772d6df18561fb
broken link from  commit bc3072f30e71c616a8196089e19a67a2c9c0a5ad
              to    tree 0aa813c183487d0a1b1f7ae81501ca7a1168283f
broken link from  commit d3bb4f8545e91ec8ace15ad31a3147d92a1d4242
              to    tree 4682108accd8e72fe68858232386dffe60f9f02d
broken link from  commit 6b34795c4b54286301bcdc0ed254a04c132cb2ad
              to    tree 5c57dd3222d11924dba841d3cae517bdc9220601
broken link from  commit d70172d855391b93bc1c5eeb9b4226df525dfc6e
              to  commit 390c8cbd527c8e707c51e25142e54421f4dd3948
broken link from  commit cc05e8d2e3733693ebb67d697ae4b65e51fea79a
              to  commit 32f081f8b901425fd1e8898478f0551970bee0f5
broken link from    tree 6a75ed6d0311d800078e77f43d427d128372d5bc
              to    blob 4a064d610c0e7207967d59934c8bc5f491f26dae
broken link from    tree 6a75ed6d0311d800078e77f43d427d128372d5bc
              to    tree 5c06ec964dcbade49287d0f36efe1f7b60f446e3
broken link from    tree b4855fa6734b5652a93a9b799eafe47fad0d13a0
              to    blob 3e1fb421613dc9066cbf9c95eddc61619a9f8eed
broken link from    tree b4855fa6734b5652a93a9b799eafe47fad0d13a0
              to    tree 556a50048d42346c283c94b78ea278ba1d57d251
broken link from    tree 289c03409370c4ca7c12266ce2822a2976bd032b
              to    blob 3abf3c48ada45f63404dcf4d675ddfdadcfa83c6
broken link from    tree 289c03409370c4ca7c12266ce2822a2976bd032b
              to    blob 3fa569892003b468ed1301426dd6d96d9644be3c
broken link from    tree 289c03409370c4ca7c12266ce2822a2976bd032b
              to    blob 0a9a54a51e84f3bc34122dbce1146d895fcbe22c
broken link from    tree 289c03409370c4ca7c12266ce2822a2976bd032b
              to    blob 3fa48873564361b4d95830803ae77f79eeafaf5b

git branch montre - * master

34
dotnetrocks

Votre référentiel est corrompu. Cela signifie que des données sont perdues et ne peuvent pas être récupérées par git lui-même. Si vous avez un autre clone de ce référentiel, vous pouvez récupérer les objets à partir de celui-ci ou en créer un nouveau.

fatal: bad object HEAD signifie que la branche référencée depuis HEAD pointe vers un objet de validation incorrect, ce qui peut signifier qu'il est manquant ou corrompu.

Dans la sortie de git fsck, vous pouvez voir qu'il manque quelques objets d'arborescence, d'objets blob et de validation. 

Notez que l'utilisation de git ne suffit pas à protéger les données. Vous devez toujours le sauvegarder en cas de corruption.

28
Ikke

essayez ceci: a travaillé pour moi rm -rf .git 

puis copier .git depuis un autre clone 

cp <pathofotherrepository>/.git . -r

alors fais

git init 

cela devrait résoudre votre problème ,  BONNE CHANCE 

27
ganesh

J'ai eu un problème similaire et ce qui a fonctionné pour moi a été de créer un nouveau clone à partir de mon référentiel d'origine. 

8
serup

Cela est dû au fait que j'ai supprimé par erreur un fichier de base de GIT. Essayez ceci sa a fonctionné pour moi. 

réinitialiser git 

git init

récupérer les données à distance 

git fetch

Maintenant, vérifiez toutes vos modifications et le statut de git en

git status
7
Mahesh Gareja

Votre référentiel est cassé. Mais vous pouvez probablement le corriger ET garder vos modifications:

  1. Sauvegardez d'abord: cp your_repository your_repositry_bak
  2. Cloner le référentiel cassé (fonctionne toujours): git clone your_repository your_repository_clone
  3. Remplacez le dossier .git cassé par celui du clone: ​​rm -rf your_repository/.git && cp your_repository_clone/.git your_repository/ -r
  4. Supprimer le clone et la sauvegarde (si tout va bien): rm -r your_repository_*
4
jan-glx

J'ai réussi à résoudre un problème similaire à celui-ci lorsque certains fichiers de git étaient corrompus:

https://stackoverflow.com/a/30871926/1737957

Dans ma réponse à cette question, recherchez la partie où j'ai eu le même message d'erreur que celui-ci: 

fatal: bad object HEAD.

Vous pouvez essayer de suivre ce que j'ai fait à partir de ce moment-là. Assurez-vous de sauvegarder tout le dossier en premier.

Bien sûr, votre référentiel pourrait être corrompu de manière complètement différente, et ce que j'ai fait ne résoudra pas votre problème. Mais cela pourrait vous donner quelques idées! Les composants internes de Git semblent magiques, mais ce n’est en réalité qu’un ensemble de fichiers pouvant être édités, déplacés, supprimés comme d’autres. Une fois que vous avez une bonne idée de ce qu’ils font et de la manière dont ils s’assemblent, vous avez de bonnes chances de réussir.

3
jwg

J'ai résolu ce problème en copiant les données de la branche (avec les erreurs) dans mon dossier git local pour ordinateur portable Apple. 

D'une manière ou d'une autre dans le terminal et lors de l'exécution: git status, me dit des données plus spécifiques où l'erreur se produit. Si vous regardez sous les erreurs, espérons que vous verrez une liste de dossiers avec une erreur. Dans mon cas, GIT a montré le dossier responsable de l'erreur. En supprimant ce dossier et en engageant la branche, j'ai réussi. le statut de git fonctionnait à nouveau les autres périphériques se mettent à jour par git pull; tout fonctionne à nouveau sur chaque machine.

J'espère que cela fonctionnera pour vous également.

0
Ricardo

Faites une copie de votre répertoire git dans votre hôte local et exécutez à nouveau git init. Poussez le projet vers un nouveau référentiel.

0
ulas korpe

Il est peu probable que cela soit la source de votre problème - mais si vous travaillez par .NET, vous vous retrouverez avec un tas de dossiers obj/. Parfois, il est utile de supprimer tous ces dossiers obj/ afin de résoudre un problème de construction fastidieux.

J'ai reçu le même fatal: bad object HEAD sur ma branche actuelle (maître) et je n'ai pas pu exécuter git status ni passer à la caisse d'une autre branche (j'ai toujours un error refs/remote/[branch] does not point to a valid object).

Si vous souhaitez supprimer tous vos dossiers obj, ne soyez pas paresseux et autorisez .git/objects dans le mélange. Ce dossier est l'endroit où tout le contenu réel de vos commits git va.

Après avoir été sur le point d'abandonner, j'ai décidé de regarder quels fichiers se trouvaient dans ma corbeille, et le voici. Restauré le fichier et mon référentiel local était comme neuf.

0
wdonahoe