Modifier l'historique avec un rebase interactif
Un rebase interactif réécrit les commits au-dessus de celui choisi : conservez, reformulez, modifiez, écrasez, corrigez ou supprimez chacun, et faites-les glisser dans un nouvel ordre, comme git rebase -i. Pour un seul changement, Edit History dans le menu d'un commit le fait en une seule étape.
Fonctionne dans GitTree Gratuit : toutes les fonctionnalités Git locales, une fois connecté.
Sur cette page
Avant de commencer
- Les commits à réécrire se trouvent sur votre branche actuelle, sans commit de fusion entre eux.
- Préférez les commits que vous n'avez pas poussés : les commits réécrits obtiennent de nouveaux identifiants.
Où le trouver
- Cliquez avec le bouton droit sur les commits juste en dessous de ceux à modifier : Edit History › Interactive Rebase of the Commits Above….
- Modifications en une étape dans le même menu Edit History : Edit Commit Message…, Drop Commit…, Move Commit Up et Move Commit Down.
- Sélectionnez plusieurs commits, puis cliquez avec le bouton droit : Squash Commits….
| Action | macOS | Windows et Linux |
|---|---|---|
| Undo tout le rebase | ⌘Z | Ctrl+Z |
Mesures
Ouvrez l'éditeur
Cliquez avec le bouton droit sur le commit sous ceux à modifier et choisissez Edit History › Interactive Rebase of the Commits Above…. Le commit le plus ancien se trouve en haut, dans l'ordre dans lequel il est rejoué.

Chaque étape a une action ; ici, un commit est écrasé dans celui ci-dessus et un autre reformulé.Interface GitTree avec un référentiel de démonstration. Choisissez une action pour chaque commit
Définissez Action à chaque étape : Pick le conserve, Reword modifie son message, Edit s'arrête là pour que vous puissiez le modifier, Squash et Fixup l'intègre dans le commit ci-dessus, Drop le laisse de côté.
Réorganiser si nécessaire
Faites glisser une étape par sa poignée ou concentrez-la et appuyez sur Alt+↑ ou Alt+↓. Les lettres fonctionnent aussi : p, r, e, s, f et d définissent les actions.
Démarrer le rebase
Appuyez sur Start Rebase. Si certains commits sont déjà sur une télécommande, confirmez d'abord leur réécriture. GitTree dit Rebase finished. Undo can put the branch back.
Résultat attendu
La branche contient les commits réécrits, avec de nouveaux identifiants. L'ancienne branche est conservée sous refs/ogt/trash.
Ce que fait chaque action
| Action | Résultat |
|---|---|
| Pick | Le commit reste tel quel. |
| Reword | Mêmes changements, nouveau message que vous tapez dans l'éditeur. |
| Edit | Le rebase s'arrête après ce commit afin que vous puissiez le modifier, puis continuer à partir de la bannière. |
| Squash | Plié dans le commit ci-dessus ; les messages sont combinés. |
| Fixup | Plié dans le commit ci-dessus ; son propre message est rejeté. Fixup, use its message conserve le message de celui-ci à la place. |
| Drop | Laissé en dehors de la branche. |
Si quelque chose ne va pas
"Ces commits incluent une fusion, ils ne peuvent donc être affichés qu'ici, pas réécrits."
Le rebase interactif dans GitTree réécrit uniquement l'historique linéaire. Commencez à partir d'un commit au-dessus de la fusion.
"L'étape… s'écrase dans rien : déplacez-la en dessous d'un commit conservé."
Un squash ou une correction nécessite un commit au-dessus pour s'y intégrer. Déplacez-le ou modifiez la première étape en Choisir.
Questions
Comment transformer plusieurs commits en un seul ?
Sélectionnez-les dans le graphique et choisissez Squash Commits… : la boîte de dialogue Squash affiche en premier le résultat, le message et les co-auteurs. Ou définissez chaque commit après le premier sur Squash ou Fixup dans l'éditeur.