2010-07-02 4 views
32

J'ai vérifié quelques modifications dans mon dépôt local que je veux pousser, mais quand je fais un git pull , je reçois:git pull échoue avec "Untracked tree tree 'blah' serait écrasé par fusion", mais tree est propre

paul$ git pull 

error: Untracked working tree file 'documentation/Android/SwiftKey/buttons.xcf' would be overwritten by merge. Aborting

Mon arbre de travail ne contient aucun fichier trassez:

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) 

le engage que je l'ai fait ne pas toucher le fichier qu'il se plaint de.

J'ai lu des réponses suggérant que je fais un git reset HEAD --hard, mais je ne suis pas sûr de l'effet que cela aura sur les commits que j'ai faits?

Répondre

26

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 affichera tous les validations qui se sont produites sur origine/maître depuis votre dernière extraction. Selon votre sortie ci-dessus, il y en a 26. L'utilisation de l'option --name-status indique quelle validation a été ajoutée au fichier.

Vous devrez renommer le fichier incriminé, faire le pull, puis le reculer (en écrasant la copie du repo). git diff filename vous dira ensuite en quoi votre copie diffère de celle que quelqu'un d'autre s'est engagée à maîtriser. Vous pouvez ensuite valider les différences ou les supprimer avec git checkout filename.

Vous devrez utiliser git pull --rebase pour rebaser vos récentes validations en plus de celles du origin. Une fois git status dit maître est en avance plutôt que divergé d'origine/maître, vous pouvez pousser.

+6

Merci Neil - juste avant que je reçoive votre réponse, j'ai réussi à comprendre que le problème était que le répertoire "Swiftkey" avait été renommé "SwiftKey" par un autre utilisateur. Parce que le système de fichiers OSX n'est pas sensible à la casse, c'est ce qui causait mon problème :-( –

+3

Pour l'enregistrement, j'ai surmonté le problème en supprimant cette partie de mon arbre local (en sécurité, car aucun de mes changements ne l'a touché), puis git pull suivi de checkout - sur l'arbre que j'ai précédemment supprimé Eugh –

+1

L'insensibilité à la casse peut être la source de beaucoup de problèmes J'ai eu la même chose avec svn et il peut être difficile de voir ce qui se passe J'ai essayé d'utiliser un volume racine sensible à la casse sur mon Mac en même temps, mais beaucoup d'applications ont été cassées, notamment Adobe CS qui refuse d'installer un volume sensible à la casse et refuse de réparer ses applications. –