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?
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.