{"meta":{"title":"À propos de git rebase","intro":"La commande git rebase vous permet de changer facilement une série de commits, en modifiant l’historique de votre dépôt. Vous pouvez effectuer la réorganisation, la modification ou le squash des commits de manière groupée.","product":"Bien démarrer","breadcrumbs":[{"href":"/fr/get-started","title":"Bien démarrer"},{"href":"/fr/get-started/using-git","title":"Utilisation de Git"},{"href":"/fr/get-started/using-git/about-git-rebase","title":"À propos de git rebase"}],"documentType":"article"},"body":"# À propos de git rebase\n\nLa commande git rebase vous permet de changer facilement une série de commits, en modifiant l’historique de votre dépôt. Vous pouvez effectuer la réorganisation, la modification ou le squash des commits de manière groupée.\n\nEn règle générale, vous devez utiliser `git rebase` pour :\n\n* Modifier les messages de commit précédents\n* Combiner plusieurs commits en un seul\n* Supprimer ou annuler les commits qui ne sont plus nécessaires\n\n> \\[!WARNING]\n> Étant donné que la modification de votre historique de commit peut rendre les choses difficiles pour toute autre personne qui utilise le référentiel, il est déconseillé de rebaser des commits lorsque vous avez déjà poussé vers un référentiel. Pour savoir comment rebaser en toute sécurité, consultez [Fusion des pull requests](/fr/pull-requests/reference/pull-request-merges).\n\n## Rebasage de commits par rapport à une branche\n\nPour rebaser tous les commits entre une autre branche et l'état actuel de la branche courante, vous pouvez entrer la commande suivante dans votre interpréteur de commandes (soit l'invite de commandes pour Windows, soit le terminal pour Mac et Linux) :\n\n```shell\ngit rebase --interactive OTHER-BRANCH-NAME\n```\n\n## Rebasage de commits par rapport à une limite dans le temps\n\nPour rebaser les quelques derniers commits dans votre branche actuelle, vous pouvez entrer la commande suivante dans votre shell :\n\n```shell\ngit rebase --interactive HEAD~7\n```\n\n## Commandes disponibles lors du rebasage\n\nSix commandes sont disponibles lors du rebasage :\n\n<dl>\n<dt><code>pick</code></dt>\n<dd>\n<code>pick</code> signifie simplement que le commit est inclus. La réorganisation de l’ordre des commandes <code>pick</code> modifie l’ordre des commits lorsque le rebasage est en cours. Si vous choisissez de ne pas inclure un commit, vous devez supprimer la ligne entière. </dd>\n\n<dt><code>reword</code></dt>\n<dd>La commande <code>reword</code> est similaire à <code>pick</code> mais, une fois que vous l’avez utilisée, le processus de rebasage s’interrompt et vous donne la possibilité de modifier le message de commit. Les modifications apportées par le commit ne sont pas affectées. </dd>\n\n<dt><code>edit</code></dt>\n<dd>Si vous choisissez d’exécuter <code>edit</code> sur un commit, vous aurez la possibilité de modifier le commit, ce qui signifie que vous pouvez ajouter ou modifier entièrement le commit. Vous pouvez également effectuer davantage de commits avant de continuer le rebasage. Cela vous permet de fractionner un commit volumineux en plus petits, ou de supprimer des modifications erronées apportées dans un commit. </dd>\n\n<dt><code>squash</code></dt>\n<dd>Cette commande vous permet de combiner deux commits ou plus en un seul commit. Un commit est écrasé dans le commit qui le précède. Git vous donne la possibilité d’écrire un nouveau message de commit décrivant les deux modifications.</dd>\n\n<dt><code>fixup</code></dt>\n<dd>Cette commande est similaire à <code>squash</code>, mais le commit à fusionner a son message supprimé. Le commit est simplement fusionné dans le commit qui le précède et le message du commit précédent est utilisé pour décrire les deux modifications.</dd>\n\n<dt><code>exec</code></dt>\n<dd>Cela vous permet d’exécuter des commandes shell arbitraires sur un commit.</dd>\n</dl>\n\n## Exemple d’utilisation de `git rebase`\n\nQuelle que soit la commande que vous utilisez, Git lance [votre éditeur de texte par défaut](/fr/get-started/git-basics/associating-text-editors-with-git) et ouvre un fichier qui détaille les commits dans la plage que vous avez choisie. Ce fichier ressemble un peu à ce qui suit :\n\n```text\npick 1fc6c95 Patch A\npick 6b2481b Patch B\npick dd1475d something I want to split\npick c619268 A fix for Patch B\npick fa39187 something to add to patch A\npick 4ca2acc i cant' typ goods\npick 7b36971 something to move before patch B\n\n# Rebase 41a72e6..7b36971 onto 41a72e6\n#\n# Commands:\n#  p, pick = use commit\n#  r, reword = use commit, but edit the commit message\n#  e, edit = use commit, but stop for amending\n#  s, squash = use commit, but meld into previous commit\n#  f, fixup = like \"squash\", but discard this commit's log message\n#  x, exec = run command (the rest of the line) using shell\n#\n# If you remove a line here THAT COMMIT WILL BE LOST.\n# However, if you remove everything, the rebase will be aborted.\n#\n```\n\nEn examinant ces informations, de haut en bas, nous voyons que :\n\n* Sept commits sont répertoriés, ce qui indique qu’il y a eu sept changements entre notre point de départ et l'état actuel de notre branche.\n* Les commits que vous avez choisis de rebaser sont triés dans l’ordre des modifications les plus anciennes (en haut) aux modifications les plus récentes (en bas).\n* Chaque ligne liste une commande (par défaut, `pick`), le SHA de commit et le message de commit. L’ensemble de la procédure `git rebase` est axé sur votre manipulation de ces trois colonnes. Les modifications que vous apportez sont *rebasées* sur votre dépôt.\n* Après les commits, Git vous indique la plage de commits que nous utilisons (`41a72e6..7b36971`).\n* Enfin, Git fournit de l’aide en vous indiquant les commandes à votre disposition lors du rebasage de commits.\n\n## Pour aller plus loin\n\n* [Utilisation du rebasage Git en ligne de commande](/fr/get-started/using-git/using-git-rebase-on-the-command-line)\n* [Chapitre « Branchement Git » du livre *Pro Git*](https://git-scm.com/book/en/v2/Git-Branching-Rebasing)\n* [Chapitre « Rebasage interactif » du livre *Pro Git*](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#_changing_multiple)\n* [Écraser les commits avec rebase](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)\n* [Synchronisation de votre branche dans GitHub Desktop](/fr/desktop/working-with-your-remote-repository-on-github-or-github-enterprise/syncing-your-branch-in-github-desktop) dans la GitHub Desktop documentation"}