git rebase échec dû à des espaces d'erreur
Je suis en train de rebase une branche git est caca parce qu'il tente d'effectuer une certaine action de fusion qui échoue. Comment puis-je obtenir git pour que cela cesse?
# git rebase -f --onto master~2 master~ master
First, rewinding head to replay your work on top of it...
Applying: r1002 - CS 1.0.23
Using index info to reconstruct a base tree...
M about.html
<stdin>:68: trailing whitespace.
<stdin>:115: trailing whitespace.
<stdin>:201: trailing whitespace.
<stdin>:2369: trailing whitespace.
<stdin>:2385: trailing whitespace.
warning: squelched 2305 whitespace errors
warning: 2310 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging about.html
CONFLICT (content): Merge conflict in about.html
Failed to merge in the changes.
Patch failed at 0001 r1002 - 1002
The copy of the patch that failed is found in:
/local/melder/tmp/test/.git/rebase-apply/patch
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
Comme vous pouvez le voir il y a 2000+ espace erreurs, pas quelque chose de facile à fusionner à la main.
Edit: à côté de cette étape pour l'instant sans la fusion que j'ai fait:
# git add -A
# git rebase --continue
Edit: nevermind, c'est une idée idiote.
OriginalL'auteur melder | 2012-11-19
Vous devez vous connecter pour publier un commentaire.
J'ai connu le même problème aujourd'hui: rebase échoue en raison de conflits causés par des espaces erreurs.
Après l'échec des essais avec différents réglages pour la
whitespace
option (git rebase --whitespace=fix
etgit rebase --whitespace=nowarn
), la solution qui a fonctionné pour moi a été d'ignorer fuite des espaces erreurs dans le récursive de la fusion de la stratégie (git rebase --abort
l'exécution d'un rebase d'abord si nécessaire):Depenending sur la nature des espaces erreurs, les options
-Xignore-space-change
et-Xignore-all-space
peut-être plus utile. Je ne sais pas si l'option--ignore-whitespace
aurait également travaillé.--ignore-whitespace
n'a pas de travail pour moi - il est revenu exactement la même que sans elle. mais le-Xignore
... paramètres ne fonctionne pas non plus - ils m'ont laissé avec les mêmes conflits de fusion, mais sans le message qu'il y a un espace problème.Êtes-vous sûr que ces conflits sont causés par un espace blanc des erreurs, ou sont-ils réels conflits de code? Mon commentaire s'applique uniquement à la première affaire.
Bonne question, merci. J'ai corrigé les erreurs manuellement, mais je suspecte qu'il y avait un mélange de blanc et de vraies erreurs. Je pense que --ignore-blanc n'a pas aider, mais je pense-Xignore-espace-à-eol n'a fait ignorer les espaces blancs des problèmes, me laissant pour résoudre les autres problèmes qui ont été sur la même ligne.
OriginalL'auteur joanpau
qui ne seront pas à pas à côté de la question. Vous avez maintenant marqueurs de conflit dans votre fichier!
Les espaces en question sont des avertissements et vous ne devriez pas avoir autant de conflits légitimes. Si le fichier est un cauchemar pour le résoudre, vous pourriez avoir besoin de le reconstruire par la main. Cela dépend de ce que vous faites.
De nombreuses fois les deux bases sont tellement différentes que chaque commit, vous êtes rebasage vous faire face à ce monstrueux conflit. J'ai tendance à orienter clairement de rebase les flux de travail et vous abonner à fusionner/reset. Voici ce que je fais: http://dymitruk.com/blog/2012/02/05/branch-per-feature/
Si vos problèmes ne sont que des espaces à des problèmes comme les fins de ligne, vous pouvez essayer de nettoyer votre référentiel en faisant un filtre de branche ou d'un rebase interactif sur chaque côté de la première à obtenir de l'espace sur chaque engager à être cohérent.
Aussi j'utilise au-delà de comparer 3 ou Perforce de Fusion pour faire des résolutions de conflits. BC3 est la syntaxe de conscience et doivent composer avec un espace le mieux. Un grand nombre de fois, il ne sera même pas les ouvrir car il permettra de résoudre les conflits pour vous et vous pouvez juste continuer.
OriginalL'auteur Adam Dymitruk
Je pense que la plupart des diff de téléspectateurs (spécialement ceux avec une interface graphique (GUI) vous permettent de sélectionner la façon de gérer les espaces changements.
Je vous suggère d'utiliser quelque chose comme
meld
que votregit mergetool
pour s'auto-corriger ces conflits. Lorsquemeld
est lancé, ensemble c'est blanc, d'une politique de traitement (à partir de laText filters
onglet dePreferences
panneau), et il s'auto-adapter à ces changements.OriginalL'auteur mgarciaisaia
Aujourd'hui, j'ai résolu un problème de cette façon:
Quand, au cours de la rebase vous obtenez un
CONFLICT (modify/delete)
conflit qui est causée par un fichier supprimé, vous pouvez le résoudre de cette façon:Quand, au cours de la rebase vous obtenez un autre conflit, vous devez corriger manuellement, et ensuite:
Lorsque vous avez terminé, cela dit
All done.
vous pouvez Alors:Maintenant vérifier le résultat:
n'est pas exactement la rappeler. Je suppose que ma correction a été apportée pour résoudre un conflit à cause de la suppression d'un fichier. Donc je suppose que REMOVE_AFTER est le git commit après laquelle le conflit s'engage qui s'est passé.
OriginalL'auteur Jeroen Vermeulen - MageHost