Aller au contenu principal

Branches Distantes dans Git


Table des matières


  1. Comprendre les branches distantes
  2. Voir les branches distantes
  3. Tracking branches
  4. Travailler avec les remote branches
  5. Supprimer des branches distantes
  6. Scénarios courants


1 - Comprendre les branches distantes



Trois types de branches

TypeExempleDescription
LocalemainSur votre machine
Remote-trackingorigin/mainCopie locale de l'état distant
RemoteSur GitHubSur le serveur

Visualisation

Votre machine                    GitHub
───────────── ──────

main main
│ │
│ origin/main │
│ │ │
└────────┘───────────────────────┘
↑ ↑
git fetch git push

origin/main vs main

  • main : Votre branche locale
  • origin/main : Dernière version connue de la branche main sur GitHub

Après un git fetch, origin/main est mis à jour mais pas main.

🔝 Retour à la table des matières



2 - Voir les branches distantes



Lister les branches

# Branches locales
git branch

# Branches distantes
git branch -r

# Toutes les branches
git branch -a

Exemple de sortie

$ git branch -a
* main
feature/login
remotes/origin/main
remotes/origin/develop
remotes/origin/feature/api

Voir les détails d'un remote

git remote show origin

Affiche :

  • URL du remote
  • Branches trackées
  • Branches locales configurées pour push/pull
  • Branches distantes supprimées

Mettre à jour la liste des branches distantes

# Récupérer les nouvelles branches
git fetch origin

# Supprimer les références aux branches supprimées
git fetch --prune
# ou
git remote prune origin

🔝 Retour à la table des matières



3 - Tracking branches



Qu'est-ce qu'une tracking branch ?

Une branche locale qui "suit" une branche distante.

# Voir les branches avec leur tracking
git branch -vv

Résultat :

* main           abc1234 [origin/main] Dernier commit
feature/login def5678 [origin/feature/login: ahead 2] WIP

Configurer le tracking

# Lors de la création
git checkout -b feature/new origin/feature/new

# Ou après
git branch --set-upstream-to=origin/feature/new feature/new
git branch -u origin/feature/new # raccourci

Premier push avec tracking

git push -u origin feature/new
# Équivalent à
git push --set-upstream origin feature/new

Avantages du tracking

# Sans tracking
git pull origin main
git push origin main

# Avec tracking
git pull
git push

🔝 Retour à la table des matières



4 - Travailler avec les remote branches



Récupérer une branche distante

# Méthode 1 : Checkout direct (crée une tracking branch)
git checkout feature/api
# Git détecte origin/feature/api et crée une branche locale

# Méthode 2 : Explicite
git checkout -b feature/api origin/feature/api

# Méthode 3 : Fetch puis checkout
git fetch origin feature/api
git checkout feature/api

Voir les différences avec le remote

# Commits locaux non poussés
git log origin/main..main

# Commits distants non récupérés
git log main..origin/main

# Après un fetch
git diff main origin/main

Ahead / Behind

git status
# Your branch is ahead of 'origin/main' by 2 commits.
# Your branch is behind 'origin/main' by 3 commits.
StatusSignificationAction
aheadCommits locaux à poussergit push
behindCommits distants à récupérergit pull
divergedLes deuxgit pull puis git push

🔝 Retour à la table des matières



5 - Supprimer des branches distantes



Supprimer sur le remote

git push origin --delete feature/old
# ou
git push origin :feature/old

Nettoyer les références locales

Après suppression sur GitHub, les références origin/... restent localement :

# Supprimer les références obsolètes
git fetch --prune

# Ou configurer pour toujours pruner
git config --global fetch.prune true

Supprimer une branche locale et distante

# 1. Supprimer localement
git branch -d feature/done

# 2. Supprimer sur le remote
git push origin --delete feature/done

Script de nettoyage

# Supprimer toutes les branches mergées (sauf main)
git branch --merged | grep -v "main" | xargs git branch -d

# Nettoyer les remote-tracking obsolètes
git remote prune origin

🔝 Retour à la table des matières



6 - Scénarios courants



Scénario 1 : Collègue a créé une nouvelle branche

# 1. Récupérer les branches
git fetch origin

# 2. Voir les nouvelles branches
git branch -r

# 3. Checkout la branche
git checkout feature/colleague-feature

Scénario 2 : Votre branche est en retard

$ git status
Your branch is behind 'origin/main' by 5 commits.

# Solution
git pull origin main

Scénario 3 : Branches divergentes

$ git status
Your branch and 'origin/main' have diverged.

# Solution 1 : Merge
git pull origin main

# Solution 2 : Rebase
git pull --rebase origin main

Scénario 4 : Branche supprimée sur GitHub mais visible localement

# Les anciennes références traînent
git branch -r
# origin/feature/old-deleted

# Nettoyer
git fetch --prune

Résumé des commandes

CommandeDescription
git branch -rLister les branches distantes
git fetch originMettre à jour les références
git fetch --pruneNettoyer les branches supprimées
git checkout -b local origin/remoteCréer une tracking branch
git push origin --delete branchSupprimer une branche distante
git branch -vvVoir le tracking des branches

🔝 Retour à la table des matières