top of page
Rechercher

Git Rebase

  • Photo du rédacteur: Renaud Jordi
    Renaud Jordi
  • 22 nov. 2023
  • 2 min de lecture

git rebase or not rebase

Telle est la question :)


Aujourd’hui, git !

Si vous êtes encore là, vous savez sûrement que git fonctionne sur quelques principes simples : des commits atomiques, des historiques de branches et des merges. Le reste n’est qu’association d’idées et raccourcis dans Git ;)


Mais alors, le rebase ? pourquoi et comment ça fonctionne ?


Vous souhaitez tester vos modifications sur une version plus récente (ou plus ancienne pour la portabilité ?)

Vous êtes sur une feature dont le développement risque durer longtemps, mais vous souhaitez tout de même récupérer les modifications de develop régulièrement ?

De même, juste avant un merge-request, vous souhaitez appliquer votre feature sur le contenu le plus récent de develop ?


Alors le rebase peut vous aider 🙂


Le rebase déplace la base d’une branche sur un autre nœud.

Intrinsèquement, Git créera une nouvelle branche, appliquera les commits successifs et supprimera la branche de départ.

De nouveaux commits sont créés (et donc de nouveaux commits IDs) et l’ancienne branche est détruite.


Pour cette raison, le dépôt git distant vous refusera le push après rebase si cette branche est déjà trackée.

Seuls ceux qui savent manier le force pourront s’y essayer. Mais peu y parviendront… 😁

En effet, une fois qu’une branche est publiée, toute votre équipe peut y avoir accès et a déjà probablement fait un checkout de celle-ci. Donc déplacer cette branche modifierait aussi leur espace de travail, ce qui peut être inattendu et pas souhaitable.

Cette protection s’effectue simplement par option, en prévenant le git push —force coté serveur.


Attention donc lors de l’utilisation en équipe !


Cela requiert une coordination impeccable pour éviter le désastre. À savoir :

- être sûr que tout le monde a poussé ses modifications et a son depôt clean

- démarrer le rebase

- utiliser la force pour pousser ;)

- chaque développeur devra faire un reset de sa branche sur le nouveau commit


Donc, pour répondre à la question initiale :

rebase autant que vous voulez, mais uniquement en local. Une fois que c’est poussé, cela devient plus délicat. Préférez d’autres techniques, comme le merge ou le cherry-picking 😉




 
 

© LH&TECH, tous droits réservés.

bottom of page