J'ai effectué un tas de validations non poussées dans ma branche de fonctionnalités et je souhaite maintenant réorganiser et écraser partiellement les validations d'appartenance visuellement. Je pense que la solution réside en quelque sorte dans le Git interactif, mais comment l'invoquer?
$ git rebase --interactive --onto <the-ID-of-the-first-commit-to-rewrite>
apparaît simplement le VI avec un
noop
contenu suivi d'informations commentées. Après avoir quitté, ma tête est réinitialisée au commit spécifié.
Comment déclencher correctement le rebase interactif pour modifier les validations depuis une certaine validation?
tu devrais utiliser
git rebase --interactive <sha1>
où <sha1>
devrait pas être le sha du premier commit que vous voulez réécrire, mais le sha du commit juste avant.
si votre histoire ressemble à ceci:
pick 43576ef last commit
...
pick 5116d42 first commit to rewrite
pick cb85072 last good commit
vous pouvez alors indiquer le commit sur lequel rebaser:
git rebase -i cb85072
git rebase -i 5116d42^
où
^
signifie le commit juste avant.-i
est juste l'abréviation de --interactive
Vous pouvez également prendre du recul par rapport à votre dernier commit par un certain nombre de commits. Par exemple, si vous souhaitez rebaser les 5 derniers commits, vous pouvez utiliser cette commande: git rebase -i HEAD~5
.
Pour revoir et réécrire les derniers n
commits, utilisez:
git rebase -i HEAD~n
p, pick = utiliser commit
f, fixup = comme "squash", mais jetez le message du journal de ce commit
https://www.freecodecamp.org/forum/t/how-to-squash-multiple-commits-into-one-with-git-squash/13231
La réponse acceptée est juste
git rebase -i HEAD~[N] // N is the number of commits, starting from the most recent one
git rebase -i HEAD~[7]
Mais si vous avez des tonnes de commit pour squash
git rebase -i [commit-id] // [commit-id] is the hash of the commit just before the first one
git rebase -i 6394dc
L'action rebase
dans votre instruction me manque:
git rebase -i <id-of-commit>