Un collègue et moi travaillons dans la même branche depuis une semaine, poussant et tirant constamment les changements et tout d'un coup, aujourd'hui, j'appuie sur «tirer» pour voir s'il y avait des changements que je devais faire et j'ai une erreur .
C’est d’ailleurs une source d’argent. L'erreur était la suivante:
git -c diff.mnemonicprefix=false -c core.quotepath=false fetch Origin
error: cannot lock ref 'refs/remotes/Origin/angular_removal': unable to resolve reference 'refs/remotes/Origin/angular_removal': reference broken
From https://bitbucket.org/colossus
! [new branch] angular_removal -> Origin/angular_removal (unable to update local ref)
Je suis dans sourcetree, qui a un terminal intégré, mais je n'arrive pas à trouver de résolution ici.
Le texte d'erreur était légèrement différent pour moi comme: unable to update local ref it is [hash_code_1] but expected [hash_code_2]
.
Donc, la commande comme rm -rf .git/refs/remotes/Origin/angular_removal
m'a aidé à ne chercher qu'une fois. Ensuite, le message reviendrait à nouveau.
Ce qui a réellement aidé dans cette situation à résoudre le problème de façon permanente, c'est:
La solution acceptée ne fournit que des détails sur la manière dont OP a résolu le problème et ce n’est pas une réponse définitive.
Pour les personnes comme moi qui se retrouvent ici de Google, voici la solution qui fonctionne réellement.
Disons, si l'erreur dit,
error: cannot lock ref 'refs/remotes/Origin/angular_removal': unable to resolve reference 'refs/remotes/Origin/angular_removal': reference broken
Ici, l'élément incriminé est un fichier corrompu nommé refs/remotes/Origin/angular_removal
qui réside dans le dossier caché .git
.
Afin de résoudre ce problème, exécutez les commandes suivantes dans le répertoire racine de votre référentiel.
rm .git/refs/remotes/Origin/angular_removal
git fsck
La première commande seule devrait résoudre le problème, car git
tente de réinitialiser les références manquantes.
La commande git fsck
est juste là pour vérifier si le référentiel est en bon état.
NOTE: Le fichier
ref
serait différent des autres. Alors assurez-vous vous utilisez le nom de fichierref
du message d'erreur que vous avez reçu. **
Vient de m'est arrivé aussi; une de mes branches sous mon pseudonyme était corrompue. Réparer:
rm <root of repository>.git/refs/remotes/Origin/<your alias>
git fetch
Vous pouvez utiliser rd /s
au lieu de rm
sous Windows.
Voici les étapes détaillées que j'ai prises pour résoudre le problème. Vous pouvez choisir de passer certaines des étapes ci-dessous:
Cela a permis à git de restaurer le fichier ref. Après cela, tout a fonctionné comme prévu à nouveau.
Plusieurs solutions ne l'ont pas tout à fait résolu mais j'ai fini par cloner à nouveau
Voici les étapes qui l'ont corrigé pour moi:
.git/packed_refs
git pack-refs
pour recréer le fichier packages_refs.Pour référence, voir: https://git-scm.com/docs/git-pack-refs