Skip to content
kokarez edited this page Sep 17, 2012 · 2 revisions

Kezako ?

Le rebase vous permet de modifier un commit en qu'il soit déjà push ou pas. Ceci est très utile lors d'un correction pour un pull-request ou corriger un oublie dans un commit que vous n'avez pas encore push.

N’hésitez pas a faire des tests pour bien prendre en main cette commande sur ce dépôt:

git clone https://github.com/Kenlodin/test.git

Procedure

Le rebase de base ne propose de ne modifier que les commits qui sont derrière la "HEAD". Ce qui ne sont pas push. Mais il est possible de "décaler" la position de la "HEAD" pour le rebase pour lui indiqué les commits déjà push que vous voulez modifier.

$ git rebase -i HEAD~4

Ce qui signifie les quatre derniers commits avant le dernier push.

Voyons maintenant la procédure complète:

$ git rebase -i HEAD~1
pick feeef45 Add msg

# Rebase 4f133f2..feeef45 onto 4f133f2
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.

Ici git vous indique tous ce que vous pouvez faire sur le commit, nous nous allons simplement "edit" donc

edit feeef45 Add msg
/* modification des fichiers <files> */
$ git commit --amend
$ git add files
$ git rebase --continue
/* Si merge, correction de celui ci puis */
$ git add files
$ git rebase --continue

Avec des corrections de commits très lointain, vous devrez sûrement faire face à de nombreux merge et remonter de commits, donc beaucoup de git rebase --continue.

Clone this wiki locally