2010-08-11 3 views
4

J'ai un problème lorsque j'essaie de rebaser une branche amont dans une branche de rubrique. Le workflow est comme ceci:Erreur fatale avec `git rebase upstream-branch` dans la branche de rubrique

git checkout upstream 
git pull origin upstream 
git checkout topic 
git rebase upstream 

Le résultat ressemble à ceci:

First, rewinding head to replay your work on top of it... 
Applying Refactored database access and added logging 
error: patch failed: path/to/file1.ext:21 
error: path/to/file1.ext: patch does not apply 
error: path/to/file2.ext:3 
error: path/to/file2.ext: patch does not apply 
fatal: mode change for path/to/file3.ext, which is not in current HEAD 
Repository lacks necessary blobs to fall back on 3-way merge. 
Cannot fall back to three-way merge. 
Patch failed at 0001. 

Cela me est arrivé hier, et je l'ai fait mes recherches et rien trouvé, donc à la fin je git merge upstream au lieu de git rebase upstream et les choses ont fonctionné. Le vrai problème est que l'erreur apparaît aujourd'hui aussi. Je suis déjà synchronisé avec l'amont en raison de la fusion d'hier. De plus, je n'ai pas modifié les fichiers présentés par mes coéquipiers depuis hier.

Ma version Git est 1.5.6.5 (et je n'ai pas vraiment envie de la mettre à jour sur cette machine, j'ai peur des conséquences indésirables).

Répondre

9

J'ai trouvé que rebaser avec l'option --merge aide dans de tels cas. (Git fera néanmoins un rebasage.)

+0

Merci, il semble résoudre le problème. J'ai quelques conflits, mais c'est une autre histoire. –

+0

En utilisant des « stratégies qui fusionnent » pour rebasage a fait l'affaire pour moi aussi quand j'avais les erreurs suivantes: 'erreur: changement de mode pour , ce qui est dans la tête actuelle Erreur: Impossible de construire ancestor' faux (I » Je posterai ceci au cas où cela aiderait quelqu'un à faire correspondre son problème avec cette solution qui a fonctionné pour moi). Je ne suis pas sûr de ce que fait le rebasage quand _not_ utilise une stratégie de fusion (la récursion par défaut semble avoir corrigé cela) ... – silasdavis

0

J'ai eu la même chose et il s'est avéré être provoqué par un message de commit qui avait un diff dans le message.

Peut-être essayer: git log --grep ++

... si c'est ça ..

Questions connexes