web-dev-qa-db-fra.com

Le conflit de fusion Git Rebas ne peut pas continuer

J'essaie de rebase 'dev' pour rattraper la branche 'master'.

$ git checkout dev 
$ git rebase master 
First, rewinding head to replay your work on top of it...
Applying: Corrected compilation problems that came from conversion from SVN.
Using index info to reconstruct a base tree...
M       src/com/....
<stdin>:125: trailing whitespace.
/**
<stdin>:126: trailing whitespace.
 *
<stdin>:127: trailing whitespace.
 */
<stdin>:128: trailing whitespace.
package com....
<stdin>:129: trailing whitespace.

warning: squelched 117 whitespace errors
warning: 122 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging src/com/....
CONFLICT (content): Merge conflict in src/com/...
Failed to merge in the changes.
Patch failed at 0001 Corrected compilation problems that came from conversion from SVN.

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".

$ vi src/com/.....   { fixed the merge issue on one file } 
$ git add -A . 
$ git rebase --continue 
src/com/....: needs merge
You must edit all merge conflicts and then
mark them as resolved using git add
$ vi src/com....      { verified, no >>> or <<< left, no merge markers } 
$ git rebase --continue 
Applying: Corrected compilation problems that came from conversion from SVN.
No changes - did you forget to use 'git add'?
If there is nothing left to stage, chances are that something else
already introduced the same changes; you might want to skip this patch.

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".

Des idées?

104
awm

Il y a quelques situations dans lesquelles j'ai vu rebase rester bloqué. La première est que les modifications deviennent nulles (une validation comporte des modifications déjà effectuées précédemment dans la base de rebase), auquel cas vous devrez peut-être utiliser git rebase --skip.

C'est assez facile à dire. Si tu fais git status il ne devrait y avoir aucun changement. Si c'est le cas, sautez-le. Si ce n'est pas le cas, envoyez une copie de git status et je peux essayer d’aider davantage.

176
Chris Nicola

L’une des fois où j’ai rencontré ce problème est lorsqu’on fait un git commit après un git add. Donc, la séquence suivante produira l'erreur de rebase que vous avez mentionnée:

git add <file with conflict>
git commit -m "<some message>"
git rebase --continue

Alors que, la séquence ci-dessous s’exécute sans erreur et continue la base:
git add <file with conflict>
git rebase --continue

Il est possible que git add -A avec l'option "Tous" crée une situation similaire. (Veuillez noter que je suis très inexpérimenté en git, cette réponse peut donc ne pas être correcte.) Pour être sûr, le git rebase --skip semble également bien fonctionner dans cette situation.

14
Steve Reed

Remarque: Git 2.0.2 (juillet 2014) a corrigé un cas où un git rebase --skip resterait bloqué et ne pourrait pas continuer avec la base actuelle.
Voir commit 95104c7 par brian m. Carlson (bk2204)

rebase--merge: réparer --skip avec deux conflits consécutifs

Si git rebase --merge _ a rencontré un conflit, --skip ne fonctionnerait pas si le prochain commit était également en conflit .
Le fichier msgnum ne serait jamais mis à jour avec le nouveau numéro de correctif. Par conséquent, aucun correctif ne serait ignoré, ce qui entraînerait une boucle inéluctable.

Mettez à jour la valeur du fichier msgnum en tant que première chose dans call_merge.
Ceci évite aussi un "Already applied "message lorsqu’on saute un commit.
Il n'y a pas de changement visible pour les autres contextes dans lesquels call_merge est appelé, car la valeur du fichier msgnum reste inchangée dans ces situations.

6
VonC
$ vi src/com....      { verified, no >>> or <<< left, no merge markers } 
$ git rebase --continue 

On dirait que tu as oublié de git add vos changements ...

3
John Brodie