J'utilise Dropbox
pour synchroniser un référentiel git
, mais maintenant quand j'essaye et Push
j'obtiens une erreur:
fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'
Il semble donc que Dropbox ait détecté un conflit et créé une copie. Ok, pas de problème, j'ai donc supprimé le fichier en conflit. Pourtant, obtenir l'erreur git ci-dessus.
$ git checkout master
M index.html
Already on 'master'
$ git add .
$ git commit -a -m "Cleanup repo"
[master ff6f817] Cleanup repo
1 file changed, 5 insertions(+), 5 deletions(-)
$ git Push
fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'
The remote end hung up unexpectedly`
Comment puis-je réparer cela? Merci.
faites une sauvegarde de votre dépôt si vous n'êtes pas sûr de celui-ci, car ces commandes sont irréversibles.
d'abord, allez dans votre répertoire repo.
cd myrepo
puis recherchez récursivement les fichiers en conflit et supprimez-les
find . -type f -name "* conflicted copy*" -exec rm -f {} \;
enfin, supprimez toutes les références "en conflit" du fichier pack-refs de git
awk '!/conflicted/' .git/packed-refs > temp && mv temp .git/packed-refs
Le fichier en conflit pourrait se trouver à plusieurs endroits, j'examinerais:
.git/logs/refs/remotes/Origin/
.git/logs/refs/heads/
.git/refs/remotes/Origin/
.git/refs/heads/
Ou vous pouvez regarder partout dans le .git
sous-répertoire: find . -name '*conflicted*'
Ou, sinon, répertoriez les branches actives avec git branch -a
et supprimer (git branch -d
) quelque chose de suspect.
Cela arrive également à notre équipe lorsque mon collègue pousse ses modifications et arrête le PC avant la mise à jour de Dropbox.
Je l'ai résolu si simplement.
Je viens de supprimer la copie en conflit. (Copie en conflit de XXXX aaaa-mm-jj)
Et tirez-le normalement.
Notez que mon collègue avait les changements avant foiré. Et il repousse ses changements. Cette fois, pas d'arrêt. :)
J'ai pu supprimer tous les fichiers en conflit de mon dossier .git, mais j'ai continué à obtenir des erreurs sur les fichiers qui n'existaient plus.
Le correctif pour moi était d'ouvrir .git/refs/packed_refs
et en supprimant les lignes contenant le texte "en conflit".
Pour moi, cela donnait une erreur: fatal: Reference has invalid format: 'refs/tags/r0.2:3'
Vous pouvez aller dans le fichier /. Git/pack_refs et supprimer la ligne pour refs/tags/r0.2:3
Puis cela a commencé à fonctionner. Mais pourquoi c'est arrivé en premier lieu, je ne sais pas.
J'obtenais la même erreur
fatal: la référence a un format non valide: 'refs/heads/somebranch (1)'
pour la commande suivante
git branch
Ensuite, j'ai recherché un nom erroné (nom de branche suivi de (1)) en utilisant la commande
find . -name 'somebranch (1)'
Et il a montré le résultat suivant
./.git/refs/heads/somebranch (1)
Quelle est une version dupliquée de somebranch IMO. Donc, j'ai supprimé cela en exécutant la commande find, puis en supprimant
find . -name 'somebranch (1)' -print -exec rm -rf {} \;
Ensuite, la commande de branche s'exécute avec succès
git branch
Essayez un git checkout master
le premier à monter sur la branche saine et bien nommée.
J'ai rencontré l'erreur similaire telle que
fatal: Reference has invalid format: 'refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)'
La simple suppression du fichier .git/refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)
dans le dépôt Dropbox distant a résolu le problème.