101 votes

Git fatal : La référence a un format invalide : 'refs/heads/master

J'utilise Dropbox pour synchroniser un git mais maintenant quand j'essaie de push Je reçois 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 ait créé une copie. Ok, pas de problème, j'ai donc supprimé le fichier en conflit. Mais je reçois toujours 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.

178voto

Lane Points 1325

Faites une sauvegarde de votre dépôt si vous n'êtes pas sûr de vous, car ces commandes sont irréversibles.

Tout d'abord, allez dans votre répertoire repo.

cd myrepo

puis recherche récursivement les fichiers en conflit et les supprime

find . -type f -name "* conflicted copy*" -exec rm -f {} \;

Enfin, supprimez toutes les références "conflictuelles" du fichier packed-refs de git.

awk '!/conflicted/' .git/packed-refs > temp && mv temp .git/packed-refs

1 votes

J'avais le même problème et cela l'a résolu pour moi. Merci !

0 votes

Cela a réglé le problème pour moi aussi. Merci.

1 votes

Pour les utilisateurs de macos find . -type f -name "* conflicted copy*" -delete

42voto

Marco Leogrande Points 2250

Le fichier en conflit peut se trouver à plusieurs endroits, je le vérifierais :

.git/logs/refs/remotes/origin/
.git/logs/refs/heads/
.git/refs/remotes/origin/
.git/refs/heads/

Ou vous pouvez chercher partout dans le .git sous-répertoire : find . -name '*conflicted*'

Ou, sinon, lister les branches actives avec git branch -a et supprimer ( git branch -d ) tout ce qui est suspect.

0 votes

Il y a des fichiers en conflit partout à l'intérieur de .git . Je les ai tous supprimés et c'est réparé. Merci.

2 votes

@Justin Heureux d'avoir pu vous aider. Si cette réponse ou toute autre réponse a résolu votre problème, veuillez la marquer comme acceptée.

2 votes

Sur Mac OS X, utilisez : find . -name '*conflicted*' (Edit : format)

8voto

Hareen Laks Points 33

Cela arrive également à notre équipe lorsque mon collègue pousse ses changements et éteint le PC avant que Dropbox ne soit mis à jour.

Je l'ai résolu si simplement.

Je viens de supprimer la copie conflictuelle. (copie conflictuelle de XXXX aaaa-mm-jj)

Et tirez-la normalement.

Notez que mon collègue avait les changements précédents en désordre. Et il a poussé ses changements à nouveau. Cette fois pas d'arrêt. :)

1 votes

Cela a fonctionné parfaitement pour moi :) merci - pour moi, Dropbox a créé un nom de fichier étrange qui n'était pas compatible avec "update".

1 votes

Cela a marché pour moi ! Il y avait un fichier avec "conflicted copy" dans le nom dans le dossier /refs/heads et je l'ai supprimé, puis pull/push et tout va bien. Merci !

7voto

Drew Points 950

J'ai pu supprimer tous les fichiers en conflit de mon dossier .git, mais j'ai continué à recevoir des erreurs concernant des fichiers qui n'existaient plus.

La solution pour moi était d'ouvrir .git/refs/packed_refs et en supprimant les lignes qui contenaient le texte "conflictuel".

0voto

poke Points 64398

Essayez un git checkout master le premier à monter sur la branche saine et bien nommée.

0 votes

Mise à jour de la sortie dans le post original.

0 votes

Hm, pourriez-vous essayer un plein git push origin master et collez également la sortie de git branch -a s'il vous plaît ?

0 votes

Même erreur ici... j'essaie git branch -a entraîne cette même erreur !

Prograide.com

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.

Powered by:

X