web-dev-qa-db-fra.com

git rebase --continuer aucun changement

J'ai deux branches avec deux fonctionnalités: banch_1 et branch_2. branch_2 utilise la fonctionnalité de branch_1. J'ai apporté des modifications dans le branch_1 et je veux rebaser branch_2 sur branch_1 pour obtenir des modifications de branch_1 en branch_2.

Donc, je vérifie sur branch_2:

git checkout branch_2

Et en essayant de rebaser sur la branche_1:

git rebase branch_1

Après cela, j'obtiens "Fusionner le conflit" pour deux fichiers. Alors je cours

git mergetool -t meld

et résoudre ces conflits, en choisissant des modifications dans branch_1.

J'enregistre des fichiers et je vais sur le terminal, en tapant git status et voyez qu'il n'y a aucun changement dans l'index git. Ensuite, je lance git rebase --continue et obtenir

No changes - did you forget to use 'git add'? 

erreur. Mais il n'y a rien à ajouter! J'écris git log et voyez la validation de branch_1 mais il n'y a pas de commit de branch_2.

Qu'est-ce que je fais mal?

28
Paul

Si je comprends bien, lorsque vous obtenez le conflit de fusion, vous acceptez toutes les modifications de branch_1, ce qui signifie que ce commit particulier de branch_2 n'est pas pertinent - toutes les modifications de ce commit sont identiques aux modifications entrantes de branch_1.

Quand git dit

Aucun changement - avez-vous oublié d'utiliser 'git add'?

cela vous indique que le commit que vous essayez d'appliquer ne modifie pas le référentiel et qu'il n'y a donc aucune raison qu'il existe.

La solution simple à cela est git rebase --skip, qui dit simplement "ignorer ce commit et continuer" comme suggéré dans le commentaire de @ C-Otto. Cela sautera le commit que vous traitez actuellement et passera aux suivants.

Vous pouvez également trouver plus facile d'utiliser le rebasage interactif (git rebase -i), qui vous présente d'abord une liste des validations qu'il appliquera, et vous offre diverses options pour ce qu'il faut faire avec chaque validation individuelle. Dans ce cas, si vous identifiez un commit qui n'est plus pertinent, vous pouvez le sauter à l'avance, de sorte que vous ne verrez jamais le conflit en premier lieu.

23
DaveyDaveDave