Lors du nettoyage de l’historique des commits, on peut avoir envie de diviser l’un d’entre eux.
ATTENTION : ne faire ça que si les commits n’ont pas été poussés dans le dépôt !
C’est très bien expliqué sur StackOverflow, et voilà ce que ça dit au cas où :
-
Perform an interactive rebase including the target commit (e.g.
git rebase -i <commit-to-split>^ branch
) and mark it to be edited. -
When the rebase reaches that commit, use
git reset HEAD^
to reset to before the commit, but keep your work tree intact. -
Incrementally add changes and commit them, making as many commits as desired.
add -p
can be useful to add only some of the changes in a given file. Usecommit -c ORIG_HEAD
if you want to re-use the original commit message for a certain commit. -
If you want to test what you’re committing (good idea!) use
git stash
to hide away the part you haven’t committed (orstash --keep-index
before you even commit it), test, thengit stash pop
to return the rest to the work tree. Keep making commits until you get all modifications committed, i.e. have a clean work tree. -
Run
git rebase --continue
to proceed applying the commits after the now-split commit.
Voir aussi :
- Git : déménagement d'un dépôt
- Git submodule
- Git : pour extraire de l'information
- Git bisect : pour trouver l'origine d'une régression
- Git tag : pour nommer des versions
- Git archive : exporter du contenu
- Git subtree : créer un nouveau dépôt à partir du répertoire d'un autre dépôt
- Git : au sujet des pull requests
- Git : les branches
- Git : comment corriger des erreurs
- Git diff : voir les différences
- Git clean : grand nettoyage
- Git : aide mémoire de base
- Afficher un pourcentage dans une page HTML
- VNC : Virtual Network Computing
- Git : déménagement d'un dépôt
- Quelques liens au sujet de l'analyse statique
- Ocaml: mon principal langage de développement
- Disque dur externe
- Les profiles dans Firefox
- Cryptographie et mail sous Android
- Quelques liens au sujet du C
- Git rebase : pour diviser un commit