Aller au contenu
Développement medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Remotes fondamentaux : travailler avec des dépôts distants

8 min de lecture

Un remote est un dépôt Git hébergé ailleurs (GitHub, GitLab, serveur interne). Le cycle de collaboration repose sur trois opérations : fetch (récupérer), merge/rebase (intégrer), push (envoyer). Ce guide détaille chaque étape et la gestion de plusieurs remotes.

Prérequis : Branches distantes et Les bases de Git.

  • Configurer un remote : ajouter, renommer, supprimer avec git remote
  • Synchroniser votre dépôt : fetch → merge/rebase → push
  • Travailler avec plusieurs remotes (origin, upstream, fork)
  • Comprendre la différence entre git fetch et git pull

Un remote est un alias vers l’URL d’un dépôt distant. Quand vous clonez un dépôt, Git crée automatiquement un remote nommé origin :

Fenêtre de terminal
git remote -v
origin https://github.com/user/project.git (fetch)
origin https://github.com/user/project.git (push)

L’URL de fetch et de push peuvent être différentes (rare mais possible).

Fenêtre de terminal
git remote add upstream https://github.com/original/project.git

Cas d’usage : vous travaillez sur un fork et ajoutez le dépôt original comme upstream pour synchroniser.

Fenêtre de terminal
# Noms uniquement
git remote
# Avec les URLs
git remote -v
# Détails complets (branches trackées, HEAD, etc.)
git remote show origin
Fenêtre de terminal
git remote rename origin github

Toutes les références (github/main, github/develop) sont automatiquement mises à jour.

Fenêtre de terminal
git remote remove upstream

Les branches de tracking associées (upstream/main, etc.) sont également supprimées.

Le workflow standard suit trois étapes :

Serveur distant Votre machine
│ │
│ 1. git fetch │
│ ──────────────────────► │ (télécharge les commits)
│ │
│ 2. merge / rebase │
│ │ (intègre localement)
│ │
│ 3. git push │
│ ◄────────────────────── │ (envoie vos commits)
│ │
Fenêtre de terminal
git fetch origin

Télécharge tous les nouveaux commits, branches et tags depuis origin. Ne modifie pas vos branches locales.

Fenêtre de terminal
# Fetch depuis tous les remotes
git fetch --all
# Fetch + suppression des refs périmées
git fetch --prune

Après le fetch, intégrez les changements distants dans votre branche :

Fenêtre de terminal
# Option merge (conserve l'historique)
git merge origin/main
# Option rebase (historique linéaire)
git rebase origin/main
Fenêtre de terminal
# Push de la branche courante
git push
# Premier push (crée la branche distante + tracking)
git push -u origin feature/login
# Push de toutes les branches
git push --all origin
# Push des tags
git push --tags

git pull combine fetch + merge (ou fetch + rebase) :

Fenêtre de terminal
# fetch + merge (par défaut)
git pull origin main
# fetch + rebase
git pull --rebase origin main
CommandeÉquivalentModifie la branche locale ?
git fetchNon
git pullgit fetch + git mergeOui
git pull --rebasegit fetch + git rebaseOui

Cas typique : vous contribuez à un projet open source via un fork.

  1. Forkez le projet sur GitHub/GitLab

  2. Clonez votre fork :

    Fenêtre de terminal
    git clone https://github.com/vous/project.git
  3. Ajoutez le dépôt original :

    Fenêtre de terminal
    git remote add upstream https://github.com/original/project.git
  4. Synchronisez régulièrement :

    Fenêtre de terminal
    git fetch upstream
    git switch main
    git merge upstream/main
    git push origin main

Vos remotes :

Fenêtre de terminal
git remote -v
origin https://github.com/vous/project.git (fetch)
origin https://github.com/vous/project.git (push)
upstream https://github.com/original/project.git (fetch)
upstream https://github.com/original/project.git (push)

Si le dépôt change d’hébergement ou si vous passez de HTTPS à SSH :

Fenêtre de terminal
# Voir l'URL actuelle
git remote get-url origin
# Changer l'URL
git remote set-url origin git@github.com:user/project.git
SymptômeCause probableSolution
fatal: 'origin' does not appear to be a git repositoryRemote mal configurégit remote -v, vérifiez l’URL
! [rejected] (non-fast-forward)Remote en avance sur vos commitsgit pull --rebase puis git push
Permission denied (publickey)Clé SSH non configuréeVérifiez ssh -T git@github.com
remote: Repository not foundURL incorrecte ou accès refuséVérifiez l’URL et vos permissions
Fetch ne ramène rienDéjà à jourgit log origin/main..main pour vérifier la diff
  • origin est l’alias par défaut du remote créé au clone
  • Le cycle : fetch → merge/rebase → push
  • git fetch récupère sans modifier — git pull récupère et intègre
  • git push -u crée la branche distante et configure le tracking
  • Plusieurs remotes : origin (votre fork) + upstream (dépôt original) pour les contributions open source

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn