Passer au contenu
GitTree
Histoire et récupération

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.

GratuitMis à jour

Fonctionne dans GitTree Gratuit : toutes les fonctionnalités Git locales, une fois connecté.

Sur cette page
  1. Avant de commencer
  2. Où le trouver
  3. Mesures
  4. Résultat attendu
  5. Ce que fait chaque action
  6. Si quelque chose ne va pas
  7. Questions
  8. En rapport

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….
ActionmacOSWindows et Linux
Undo tout le rebase⌘ZCtrl+Z

Mesures

  1. 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é.

    Animation : l'éditeur de rebase interactif s'ouvre, un commit est défini sur Squash et un autre sur Reword
    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.
  2. 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é.

  3. 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.

  4. 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

Actions de rebase interactives
ActionRésultat
PickLe commit reste tel quel.
RewordMêmes changements, nouveau message que vous tapez dans l'éditeur.
EditLe rebase s'arrête après ce commit afin que vous puissiez le modifier, puis continuer à partir de la bannière.
SquashPlié dans le commit ci-dessus ; les messages sont combinés.
FixupPlié dans le commit ci-dessus ; son propre message est rejeté. Fixup, use its message conserve le message de celui-ci à la place.
DropLaissé 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.