32 votes

git pull échoue avec "Untracked working tree file 'blah' would be overwritten by merge", mais l'arbre est propre

J'ai enregistré des changements dans mon dépôt local que je veux pousser, mais quand je fais un git pull, j'obtiens :

paul$ git pull 

erreur : Untracked working tree file 'documentation/Android/SwiftKey/buttons.xcf' serait écrasé par la fusion. Abandon de

Mon arbre de travail ne contient aucun fichier non suivi :

paul$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 2 and 26 different commit(s) each, respectively.
#
nothing to commit (working directory clean)

Les modifications que j'ai apportées ne touchent pas le fichier qui fait l'objet de la plainte.

J'ai lu des réponses suggérant que je fasse un git reset HEAD --hard mais je ne suis pas sûr de l'effet que cela aura sur les modifications que j'ai effectuées.

26voto

Neil Mayhew Points 2579

Ce ne sont pas les commits que vous avez faits qui touchent le fichier, mais les commits que vous tirez. Inspectez la branche distante que vous suivez pour voir ce qui s'est passé. Par exemple, git log master..origin/master montrera tous les commits qui ont eu lieu sur origine/maître depuis la dernière fois que vous avez tiré. D'après votre sortie ci-dessus, il y en a 26. En utilisant le --name-status montrera quel commit a ajouté le fichier.

Vous devrez renommer le fichier incriminé, effectuer le retrait, puis le déplacer à nouveau (en écrasant la copie du dépôt). git diff _filename_ vous indiquera alors en quoi votre copie diffère de celle que quelqu'un d'autre s'est engagé à maîtriser. Vous pouvez alors valider les différences, ou les jeter avec la commande git checkout _filename_ .

Vous devrez utiliser git pull --rebase pour rebaser vos commits récents au-dessus de ceux qui se trouvent dans origin . Une fois que git status dit que le maître est en avant plutôt que divergent de l'origine/maître, vous pouvez pousser.

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