Git déplacer mon dernier commit sur une autre branche

Posté le sam. 22 juin 2013

J'ai fais une boulette ! J'ai commité deux fois en étant sur la branche master… Généralement je fais toujours une branche pour les modifications, cette fois j'avais créé cette branche debug_redirect mais je n'étais pas dessus…

Je me suis retrouvé avec les commits A-B-C sur mon master. Or le seul qui devait être dessus devait être A et je devais avoir B-C dans ma branche debug_redirect. Voici un schéma de la situation :

debug_redirect
          ↓
          A-B-C
              ↑
             master

Je dois donc soit mettre a jour ma branche debug_redirect. :

git checkout debug_redirect

git merge master

Ce qui donne :

debug_redirect
        ↓
    A-B-C
        ↑
      master

Il me reste qu'a retourner sur le master et revenir à la version A. :

git checkout master

git reset --hard HEAD~2

Ce qui donne :

  debug_redirect
      ↓
  A-B-C
  ↑
master

Maintenant que j'ai fixé mon bug sur ma branche  debug_redirect je peux le merger avec le master. :

git merge debug_redirect --no-ff

Résultat :

         B-C      debug_redirect
       /     \
     A - - - - D   master

Pour voir vos commits par branche vous pouvez aussi utiliser la commande git log :

git log --graph --oneline --decorate
*   4c677ac (HEAD, master) Merge branch 'debug_redirect'
|\ 
| * 90e7a7a (debug_redirect) Fix another bug on redirect
| * 40ae981 Fix the redirect bug
|/ 
* 4e06ff4 initial commit