L’une des principales différences entre git et les autres systèmes de contrôle de version est qu’il permet à l’utilisateur de réécrire l’historique. Pour ce faire, le moyen principal consiste à utiliser git rebase, généralement suivi d’un git push --force pour écraser l’historique du serveur (remote) avec l’historique local.
Voici comment diviser les commits existants à l’aide de rebase, reset et commit.
Supposons que vous ayez deux fichiers édités dans un commit (A et B) et que vous souhaitiez importer les modifications d’un de ces fichiers (A) dans votre branche actuelle, mais pas celles de l’autre (B).
Utiliser git cherry-pick <commit-hash> n’est pas une option, car cela impliquerait les modifications pour A et B.
La solution consiste à scinder le commit en 2 et à ne sélectionner que le nouveau commit contenant les modifications pour A.
Pour faire ça:
- lancez
git rebase -i <commit-hash>~(notez le-) ougit rebase -i <hash-of-previous-commit> - recherchez le commit que vous voulez scinder dans l’écran d’édition du rebase, changez le
pickene(edit) - sauvegardez et quittez (
ESCsuivi de:wqpour fermer VIM) git reset HEAD~pour réinitialiser les modifications planifiées (stash)git add [files-to-add]tous les fichiers que nous voulons ajouter au premier commit (ici, ce seraitgit add A)git commitnormalement, avec un message, etc.- Exécutez autant de fois que vous le souhaitez:
git add [other-files-to-add]git commit
git rebase -- continued’indiquer que la division est terminée et continue la refonte
Enfin, nous pouvons git cherry-pick <new-commit-hash> pour intégrer les modifications dans notre branche.

