web-dev-qa-db-fra.com

Broken Branch in git, fatal: votre branche actuelle semble être cassée.

Voici mon cas:

  • Je travaillais sur une branche.
  • Poussé nouveau commet à la télécommande.
  • Retourné à la branche principale. 

Mais tout à coup, après avoir tapé la commande git checkout master, mon ordinateur rencontre un écran bleu de la mort et une fermeture inattendue se produit. Après avoir redémarré mon ordinateur, j'ai vérifié l'état de ma branche actuelle et, par conséquent, chaque fichier a été marqué comme nouveau fichier.

Maintenant, je suis bloqué à ce stade et après la commande git log, une erreur se produit. 

$ git log
fatal: your current branch appears to be broken

Comment résoudre ce problème et récupérer ma branche ?.

Je travaille avec Windows 7 et la dernière version de git bash

Edit: Je ne veux pas supprimer cette branche.

20
eirenaios

Je rencontre un problème similaire sur Windows 7. Dans mon cas, le fichier de branche actuel (voir ./git/HEAD) sous \.git\refs\heads était cassé. 

J'ai trouvé le code de hachage de la branche en cours cassée sur .git\logs\refs\heads avec le même nom de branche. 

Et j'ai résolu le problème en ouvrant ce fichier (.git\logs\refs\heads\xxx) via le bloc-notes et en copiant le 4ème numéro (le code de hachage) dans (.git\refs\heads\xxx)

16
David Zhang

Les fichiers du répertoire .git\refs\heads sont vos branches . Vérifiez ces fichiers. Ils ne doivent contenir qu'un seul objet de hachage SHA-1 de validation. Ce hachage correspond à votre dernière touche SHA-1 et à votre HEAD en même temps.

Copiez la clé SHA-1 et tapez 

$ git cat-file -t 5917fefd485f655ab369d4e9eeda3c157c03f514
commit

$ git cat-file -p 5917fefd485f655ab369d4e9eeda3c157c03f514
tree b75cab3c54b780075b312be3e878b389a2baf904
parent 8235189aa22169295243d295fb1cc2ff2f8f7cd5
author Ilker Cat <[email protected]> 1495136738 +0200
committer Ilker Cat <[email protected]> 1495136738 +0200

La deuxième sortie est ce que contient un objet commit. Essayez de vérifier si l'objet commit de votre branche master sous .git\refs\heads\master et ses clés SHA-1 arborescente et parent ne sont pas endommagés.

Même certaines apostrophes à l'intérieur de votre fichier de branches maître mèneront à une "branche cassée". Il ne doit contenir que le dernier hachage de l'objet SHA-1 validé et rien d'autre.

8
Ilker Cat

Vous pouvez rencontrer cette erreur si vous essayez de renommer une branche en branche de noms de lieux (ou de dossiers).

Si cela se produit, allez dans les répertoires .git/logs/refs/heads/<name> et .git/refs/heads/<name> et vous verrez que votre branche est maintenant un dossier contenant un fichier. 

Dans les deux dossiers, déplacez le fichier au niveau du dossier, vérifiez cette branche, supprimez les dossiers maintenant vides et vous devriez maintenant pouvoir exécuter git checkout -b <name>/<subname> sans erreur ou git branch -M <name>/<subname>

5
horsantula

Votre nom de branche contient maintenant probablement des caractères spéciaux ou quelque chose comme ça.

Vous devriez aller dans le répertoire racine de votre extraction (où se trouve le répertoire .git/) et

  1. Élément de liste edit .git/packed-refs; si vous voyez une ligne avec le nom de votre branche, supprimez-la
  2. regardez dans .git/refs/heads for un fichier nommé d'après votre branche; si vous en voyez un, supprimez-le
2
Maksym Semenykhin

Parfois, cela peut également être dû à des problèmes d’autorisation de fichier. Vérifiez si vous disposez des autorisations appropriées sur tous les fichiers du référentiel.

2
Amit P

Avait le même problème . Suppression de .git\refs\heads\résolu le problème pour moi.

1
Hike Nalbandyan

Je l'ai résolu en clonant le référentiel dans un nouveau dossier, puis en remplaçant les fichiers modifiés. Cela ne semble pas être une bonne solution, mais c'est sûr!

0
reverie_ss