Disons que dans master
j'ai une fonctionnalité désactivée. Je travaille sur cette fonctionnalité sur la branche feature
, j'ai donc un commit spécial $
là qui active simplement cette fonctionnalité. Maintenant, je veux fusionner les modifications que j'ai apportées dans feature
dans master
, mais garder la validation d'activation. C'est comme
main: A--B--X--Y
feature: A--B--$--C--D
Disons que je veux le faire, en déplaçant le $
commit en plus de la fonctionnalité:
new feature: A--B--C--D--$
Comment pourrais-je procéder?
git rebase -i B
, puis déplacez $
à la fin de la liste qui apparaît dans votre éditeur. Il commencera comme la première ligne du fichier qui s'ouvre. Vous pouvez également supprimer complètement cette ligne, ce qui supprimera simplement cette validation de l'historique de votre branche.
Si vous souhaitez conserver vos validations dans le même ordre sur feature
, vous devez créer une nouvelle branche et effectuer les opérations suivantes. Sinon, faites-le sur feature
git rebase -i <sha for commit B>
Déplacer commit $ en bas de la liste
git checkout master
git rebase feature <or the other branch name>
La question n'était pas claire pour moi, mais si vous ne vouliez pas du tout de $, plutôt que de le déplacer, supprimez-le après git rebase -i
Bien que vous souhaitiez le faire sur une nouvelle branche pour ne pas la perdre. Alors que vous changez l'histoire.
Cela suppose également que la branche feature
n'a pas été poussée vers une télécommande car l'historique de réécriture est mauvais.