Comment afficher les différences entre les branches Git locales et distantes

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce tutoriel, nous allons explorer comment afficher les différences entre vos branches Git locales et leurs branches distantes correspondantes. Comprendre ces différences est essentiel pour gérer efficacement votre base de code et résoudre les conflits lors de la fusion de branches. À la fin de ce guide, vous aurez les connaissances nécessaires pour naviguer et comparer avec confiance vos branches Git locales et distantes.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/CollaborationandSharingGroup(["Collaboration and Sharing"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/merge("Merge Histories") git/CollaborationandSharingGroup -.-> git/pull("Update & Merge") git/CollaborationandSharingGroup -.-> git/push("Update Remote") git/CollaborationandSharingGroup -.-> git/remote("Manage Remotes") subgraph Lab Skills git/status -.-> lab-392995{{"Comment afficher les différences entre les branches Git locales et distantes"}} git/commit -.-> lab-392995{{"Comment afficher les différences entre les branches Git locales et distantes"}} git/diff -.-> lab-392995{{"Comment afficher les différences entre les branches Git locales et distantes"}} git/branch -.-> lab-392995{{"Comment afficher les différences entre les branches Git locales et distantes"}} git/checkout -.-> lab-392995{{"Comment afficher les différences entre les branches Git locales et distantes"}} git/merge -.-> lab-392995{{"Comment afficher les différences entre les branches Git locales et distantes"}} git/pull -.-> lab-392995{{"Comment afficher les différences entre les branches Git locales et distantes"}} git/push -.-> lab-392995{{"Comment afficher les différences entre les branches Git locales et distantes"}} git/remote -.-> lab-392995{{"Comment afficher les différences entre les branches Git locales et distantes"}} end

Comprendre les branches et les dépôts Git

Git est un système de contrôle de version distribué qui permet aux développeurs de gérer et de suivre les modifications apportées à leur base de code. Au cœur de Git se trouvent les concepts de dépôts (repositories) et de branches, qui sont essentiels pour comprendre le fonctionnement de Git.

Dépôts Git

Un dépôt Git est un répertoire qui contient tous les fichiers et dossiers d'un projet, ainsi que l'historique complet des modifications apportées à ces fichiers. Les dépôts Git peuvent être stockés localement sur la machine d'un développeur ou hébergés sur un serveur distant, comme GitHub, GitLab ou Bitbucket.

Branches Git

Dans Git, une branche est une ligne de développement distincte qui diverge de la base de code principale. Les branches permettent aux développeurs de travailler sur de nouvelles fonctionnalités, des corrections de bogues ou des expériences sans affecter la branche principale (souvent appelée "master" ou "main"). Les branches peuvent être créées, fusionnées et supprimées selon les besoins, offrant ainsi un moyen flexible et efficace de gérer le processus de développement.

graph LR A[Main Branch] --> B[Feature Branch] A --> C[Bugfix Branch] B --> D[Merge to Main] C --> D

Stratégies de branchement

Git prend en charge diverses stratégies de branchement, telles que le flux de travail Gitflow, le flux GitHub et l'approche de développement basée sur le tronc (Trunk-based development). Ces stratégies définissent les meilleures pratiques pour créer, fusionner et gérer les branches dans un projet basé sur Git.

Clonage et envoi vers des dépôts distants

Les développeurs peuvent créer une copie locale d'un dépôt Git distant en le "clonant". Une fois le dépôt cloné, les développeurs peuvent apporter des modifications à leur copie locale, puis "envoyer" (push) ces modifications vers le dépôt distant, permettant ainsi aux autres membres de l'équipe d'accéder à la base de code mise à jour.

## Clone a remote repository
git clone https://github.com/username/project.git

## Push changes to the remote repository
git push origin main

En comprenant les concepts de dépôts et de branches Git, les développeurs peuvent gérer efficacement et collaborer sur leurs projets, garantissant ainsi un processus de développement fluide et efficace.

Afficher les différences entre les branches locales

Lorsque vous travaillez avec Git, il est souvent nécessaire de comparer les différences entre les branches locales. Cela peut vous aider à comprendre les modifications apportées dans chaque branche et à prendre des décisions éclairées concernant la fusion ou la résolution des conflits.

Lister les branches locales

Pour afficher la liste de toutes les branches locales de votre dépôt Git, vous pouvez utiliser la commande suivante :

git branch

Cela affichera toutes les branches locales, la branche actuellement sélectionnée étant marquée d'un astérisque (*).

Comparer les branches locales

Pour afficher les différences entre deux branches locales, vous pouvez utiliser la commande git diff. Par exemple, pour comparer la branche main avec la branche feature-branch, vous exécuteriez :

git diff main feature-branch

Cela affichera les modifications apportées dans la branche feature-branch par rapport à la branche main.

Vous pouvez également utiliser la commande git log pour afficher l'historique des validations (commits) et les différences entre les branches :

git log main..feature-branch --oneline

Cela affichera une liste compacte des validations présentes dans la branche feature-branch mais pas dans la branche main.

Visualiser les différences entre les branches

Pour une représentation plus visuelle des différences entre les branches, vous pouvez utiliser des outils tels que git difftool ou git mergetool. Ces outils fournissent une interface graphique qui facilite la compréhension et la résolution des conflits.

graph LR A[Main Branch] --> B[ Branch Branch] B --> C[Commit 1] B --> D[Commit 2] A --> E[Commit 3] A --> F[Commit 4]

En comprenant comment afficher les différences entre les branches locales, vous pouvez gérer efficacement votre flux de travail Git et vous assurer que votre base de code est cohérente et bien organisée.

Afficher les différences entre les branches distantes

En plus de comparer les branches locales, il est souvent nécessaire d'afficher les différences entre les branches distantes. Cela peut être utile lors de la collaboration avec d'autres développeurs ou lorsque vous essayez de comprendre les modifications apportées à un dépôt distant.

Récupérer les branches distantes

Avant de pouvoir comparer les branches distantes, vous devez vous assurer d'avoir les dernières informations du dépôt distant. Vous pouvez le faire en exécutant la commande git fetch :

git fetch origin

Cela récupérera les dernières validations (commits) et les informations sur les branches depuis le dépôt distant (dans ce cas, le dépôt distant origin).

Lister les branches distantes

Pour afficher la liste de toutes les branches distantes, vous pouvez utiliser la commande suivante :

git branch -r

Cela affichera toutes les branches distantes, y compris celles que vous n'avez pas récupérées localement.

Comparer les branches distantes

Pour comparer les différences entre deux branches distantes, vous pouvez utiliser la commande git diff avec les noms des branches distantes. Par exemple, pour comparer la branche origin/main avec la branche origin/feature-branch, vous exécuteriez :

git diff origin/main origin/feature-branch

Cela affichera les modifications apportées dans la branche origin/feature-branch par rapport à la branche origin/main.

Vous pouvez également utiliser la commande git log pour afficher l'historique des validations et les différences entre les branches distantes :

git log origin/main..origin/feature-branch --oneline

Cela affichera une liste compacte des validations présentes dans la branche origin/feature-branch mais pas dans la branche origin/main.

Visualiser les différences entre les branches distantes

De la même manière que pour comparer les branches locales, vous pouvez utiliser des outils tels que git difftool ou git mergetool pour visualiser les différences entre les branches distantes.

graph LR A[Origin/Main] --> B[Origin/Feature-Branch] B --> C[Commit 1] B --> D[Commit 2] A --> E[Commit 3] A --> F[Commit 4]

En comprenant comment afficher les différences entre les branches distantes, vous pouvez collaborer efficacement avec d'autres développeurs et rester à jour avec les modifications apportées au dépôt distant.

Comparer les différences entre les branches locales et distantes

Comparer les différences entre vos branches locales et les branches distantes correspondantes est une étape cruciale pour maintenir une base de code cohérente et à jour. Ce processus vous aide à identifier tout écart entre votre travail local et le dépôt distant, vous permettant de prendre des décisions éclairées concernant la fusion ou la résolution des conflits.

Afficher les différences entre les branches locales et distantes

Pour comparer les différences entre vos branches locales et leurs équivalents distants, vous pouvez utiliser la commande git diff avec le préfixe origin/ pour référencer les branches distantes :

git diff main origin/main
git diff feature-branch origin/feature-branch

Cela affichera les modifications apportées dans vos branches locales par rapport aux branches distantes.

Identifier les branches divergentes

Si votre branche locale a divergé de la branche distante, vous pourriez voir une sortie similaire à ce qui suit :

$ git diff main origin/main
diff --git a/file1.txt b/file1.txt
index 123abc..def456 100644
--- a/file1.txt
+++ b/file1.txt
@@ -1,3 +1,4 @@
 Line 1
 Line 2
 Line 3
+Local change

Dans cet exemple, la branche locale main a une modification qui n'est pas présente dans la branche distante origin/main.

Résoudre les branches divergentes

Pour résoudre l'écart entre vos branches locales et distantes, vous avez quelques options :

  1. Fusionner la branche distante : Vous pouvez fusionner la branche distante dans votre branche locale pour intégrer les modifications du dépôt distant.
  2. Rebaser votre branche locale : Vous pouvez rebaser votre branche locale sur la branche distante, ce qui appliquera vos validations (commits) locales sur l'historique de la branche distante.
  3. Envoyer vos modifications locales : Si vos modifications sont destinées à devenir le nouvel état de la branche distante, vous pouvez envoyer (push) votre branche locale vers le dépôt distant.

Le choix de la méthode appropriée dépend de votre situation spécifique et de la nature des modifications impliquées. LabEx recommande d'utiliser une combinaison de ces techniques pour maintenir un historique Git propre et cohérent.

graph LR A[Local Main] --> B[Remote Main] B --> C[Divergence] A --> C C --> D[Merge] C --> E[Rebase] C --> F[Push]

En comprenant comment comparer les différences entre les branches locales et distantes, vous pouvez collaborer efficacement avec votre équipe et vous assurer que votre base de code reste synchronisée avec le dépôt distant.

Résoudre les conflits lors de la fusion de branches

Lorsque vous fusionnez deux branches dans Git, il est possible que les modifications apportées dans ces branches entrent en conflit les unes avec les autres. Cela se produit lorsque le même fichier a été modifié dans les deux branches et que Git est incapable de déterminer automatiquement quelles modifications doivent avoir la priorité. Résoudre ces conflits est une étape cruciale pour maintenir un historique Git propre et cohérent.

Identifier les conflits de fusion

Vous pouvez identifier les conflits de fusion en exécutant la commande git status après avoir tenté de fusionner deux branches. S'il y a des conflits, Git marquera les fichiers concernés avec des marqueurs de conflit, indiquant les zones où les conflits se sont produits.

$ git merge feature-branch
Auto-merging file1.txt
CONFLICT (content): Merge conflict in file1.txt
Automatic merge failed; fix conflicts and then commit the result.

Résoudre les conflits de fusion

Pour résoudre un conflit de fusion, vous devez éditer manuellement les fichiers en conflit et choisir quelles modifications conserver. Git marquera les sections en conflit avec la syntaxe suivante :

<<<<<<< HEAD
Local changes
=======
Remote changes
>>>>>>> feature-branch

Vous pouvez ensuite éditer le fichier pour conserver les modifications souhaitées, supprimer les marqueurs de conflit et enregistrer le fichier.

Utiliser des outils de fusion

Pour faciliter le processus de résolution des conflits, vous pouvez utiliser un outil de fusion comme git mergetool. Cela ouvrira une interface graphique qui vous permettra de visualiser les différences et de décider quelles modifications conserver.

git mergetool

Finaliser la fusion

Après avoir résolu tous les conflits, vous devez ajouter les fichiers résolus à la zone de préparation (staging area) puis valider (commit) la fusion :

git add file1.txt
git commit -m "Resolved merge conflict in file1.txt"

Gérer les conflits de fusion dans LabEx

LabEx recommande de suivre une approche structurée pour résoudre les conflits de fusion. Cela inclut :

  1. Communiquer clairement avec votre équipe sur les conflits et la résolution proposée.
  2. Tester soigneusement la base de code fusionnée pour vous assurer que toutes les fonctionnalités fonctionnent comme prévu.
  3. Documenter le processus de résolution des conflits pour référence future.

En suivant ces meilleures pratiques, vous pouvez gérer efficacement les conflits de fusion et maintenir un flux de travail Git sain au sein de votre projet LabEx.

Meilleures pratiques pour la gestion des branches

Une gestion efficace des branches est cruciale pour maintenir un dépôt Git propre et organisé. LabEx recommande les meilleures pratiques suivantes pour vous aider à gérer vos branches de manière efficace :

Adopter une stratégie de branchement

Choisissez une stratégie de branchement bien établie, comme Gitflow ou GitHub flow, et appliquez-la de manière cohérente dans tout votre projet. Cela vous aidera à maintenir une structure de branches claire et prévisible.

graph LR A[Main Branch] --> B[Feature Branch] A --> C[Hotfix Branch] B --> D[Merge to Main] C --> D

Garder les branches petites et ciblées

Cherchez à créer des branches petites et ciblées qui abordent une fonctionnalité spécifique ou une correction de bogue. Évitez de créer des branches volumineuses et monolithiques qui tentent de résoudre plusieurs problèmes à la fois.

Fusionner et rebaser régulièrement

Fusionnez régulièrement la branche principale dans vos branches de fonctionnalités pour les maintenir à jour et réduire le risque de conflits. Alternativement, vous pouvez rebaser vos branches de fonctionnalités sur la branche principale pour maintenir un historique de validations (commits) linéaire.

Supprimer les branches fusionnées

Une fois qu'une branche de fonctionnalité a été fusionnée dans la branche principale, supprimez la branche pour garder votre dépôt propre et organisé. Vous pouvez le faire en utilisant la commande git branch -d.

git branch -d feature-branch

Utiliser des noms de branches significatifs

Choisissez des noms de branches qui décrivent clairement le but de la branche, comme feature/user-authentication ou bugfix/login-issue. Évitez d'utiliser des noms vagues ou génériques comme temp ou work.

Collaborer avec votre équipe

Communiquez avec les membres de votre équipe concernant la gestion des branches, surtout lorsqu'il s'agit de résoudre des conflits ou de fusionner des modifications. Cela contribuera à assurer un processus de développement fluide et coordonné.

En suivant ces meilleures pratiques, vous pouvez gérer efficacement vos branches Git et maintenir un environnement de développement propre, organisé et collaboratif au sein de votre projet LabEx.

Résumé

Maîtriser la capacité d'afficher les différences entre les branches Git locales et distantes est une compétence précieuse pour tout développeur. Ce tutoriel vous a fourni les étapes nécessaires pour comparer vos branches locales avec leurs équivalents distants, identifier les conflits et gérer efficacement votre flux de travail Git. En comprenant ces techniques, vous pouvez rationaliser votre processus de développement, maintenir l'intégrité du code et collaborer plus efficacement avec votre équipe. N'oubliez pas que rester à la hauteur des différences entre les branches est la clé pour garantir une expérience Git fluide et efficace.