Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Exécution d'une Opération de Rebase | Flux de Travail Plus Avancés
Fondamentaux de GitHub
course content

Contenu du cours

Fondamentaux de GitHub

Fondamentaux de GitHub

1. Introduction à GitHub
2. Interaction de Base avec les Dépôts Distants
3. Flux de Travail Plus Avancés

book
Exécution d'une Opération de Rebase

Rebaser les modifications sur la branche main

Avant de pouvoir rebaser nos modifications, nous devons d'abord basculer sur la branche main et récupérer les dernières modifications :

Examinons maintenant l'arbre des commits :

À ce stade, les branches main et feature/payment possèdent toutes deux des commits après leur ancêtre commun le plus récent. Cela indique qu'une fusion en avance rapide n'est pas possible.

Si nous fusionnions ces branches, une fusion à trois voies aurait lieu. Cependant, nous souhaitons conserver un historique linéaire, donc nous allons effectuer un rebase de la branche feature/payment sur la branche main. Cela peut être réalisé en basculant sur la branche feature/payment et en exécutant la commande git rebase :

Fusion en avance rapide

Puisque le rebasage a réussi, examinons à nouveau notre arbre de commits :

Comme prévu, l’historique des commits est désormais linéaire avec le dernier commit sur la branche feature/payment. Nous pouvons maintenant effectuer une simple fusion en avance rapide sur la branche main :

Vérification que les deux branches pointent vers le même commit en consultant le dernier commit :

Suppression de la branche de fonctionnalité

La branche main contient désormais le dernier commit avec le système de paiement implémenté, nous pouvons donc supprimer en toute sécurité la branche feature/payment en local et à distance. La commande suivante supprime la branche distante :

Nous pouvons maintenant supprimer la branche locale :

Enfin, toutes les modifications apportées peuvent être poussées vers le dépôt distant :

Pour vérifier que la branche feature a été supprimée à la fois localement et à distance, vous pouvez exécuter la commande suivante, qui liste toutes les branches locales et distantes (-a signifie toutes) :

Comme vous pouvez le constater, la branche feature/payment a bien été supprimée, et il ne reste plus que deux branches : main et john/test avec leurs équivalents distants.

Globalement, le rebasage fonctionne bien pour les modifications locales qui n'ont pas encore été partagées, mais il peut entraîner des problèmes importants pour les modifications déjà publiées sur un dépôt distant et éventuellement téléchargées par d'autres collaborateurs. Rebaser des commits utilisés par d'autres peut créer de la confusion et des conflits en raison de la réécriture de l'historique des commits.

En règle générale, il est conseillé d'éviter de rebaser des modifications qui ont été poussées sur des dépôts distants afin de prévenir ces problèmes.

question mark

Après avoir rebasé feature/payment sur main, pourquoi la commande git merge feature/payment effectue-t-elle une fusion rapide (fast-forward) ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 5

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

course content

Contenu du cours

Fondamentaux de GitHub

Fondamentaux de GitHub

1. Introduction à GitHub
2. Interaction de Base avec les Dépôts Distants
3. Flux de Travail Plus Avancés

book
Exécution d'une Opération de Rebase

Rebaser les modifications sur la branche main

Avant de pouvoir rebaser nos modifications, nous devons d'abord basculer sur la branche main et récupérer les dernières modifications :

Examinons maintenant l'arbre des commits :

À ce stade, les branches main et feature/payment possèdent toutes deux des commits après leur ancêtre commun le plus récent. Cela indique qu'une fusion en avance rapide n'est pas possible.

Si nous fusionnions ces branches, une fusion à trois voies aurait lieu. Cependant, nous souhaitons conserver un historique linéaire, donc nous allons effectuer un rebase de la branche feature/payment sur la branche main. Cela peut être réalisé en basculant sur la branche feature/payment et en exécutant la commande git rebase :

Fusion en avance rapide

Puisque le rebasage a réussi, examinons à nouveau notre arbre de commits :

Comme prévu, l’historique des commits est désormais linéaire avec le dernier commit sur la branche feature/payment. Nous pouvons maintenant effectuer une simple fusion en avance rapide sur la branche main :

Vérification que les deux branches pointent vers le même commit en consultant le dernier commit :

Suppression de la branche de fonctionnalité

La branche main contient désormais le dernier commit avec le système de paiement implémenté, nous pouvons donc supprimer en toute sécurité la branche feature/payment en local et à distance. La commande suivante supprime la branche distante :

Nous pouvons maintenant supprimer la branche locale :

Enfin, toutes les modifications apportées peuvent être poussées vers le dépôt distant :

Pour vérifier que la branche feature a été supprimée à la fois localement et à distance, vous pouvez exécuter la commande suivante, qui liste toutes les branches locales et distantes (-a signifie toutes) :

Comme vous pouvez le constater, la branche feature/payment a bien été supprimée, et il ne reste plus que deux branches : main et john/test avec leurs équivalents distants.

Globalement, le rebasage fonctionne bien pour les modifications locales qui n'ont pas encore été partagées, mais il peut entraîner des problèmes importants pour les modifications déjà publiées sur un dépôt distant et éventuellement téléchargées par d'autres collaborateurs. Rebaser des commits utilisés par d'autres peut créer de la confusion et des conflits en raison de la réécriture de l'historique des commits.

En règle générale, il est conseillé d'éviter de rebaser des modifications qui ont été poussées sur des dépôts distants afin de prévenir ces problèmes.

question mark

Après avoir rebasé feature/payment sur main, pourquoi la commande git merge feature/payment effectue-t-elle une fusion rapide (fast-forward) ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 5
some-alt