← Retour au portail

Fiche 2 - GitHub — Commandes et workflow de base

Maîtriser les interactions avec GitHub : clone, push, pull, fetch, gestion des branches distantes, et workflow collaboratif simple.

Intermédiaire — SISR 1ère/2ème année ⏱️ 25 min 📁 Autres

🎯 Objectifs de la fiche

  1. Lier un dépôt local à GitHub — remote add, premier push
  2. Cloner un dépôt existant — clone, travail local
  3. Synchroniser avec le dépôt distant — push, pull, fetch
  4. Travailler avec les branches distantes — push branch, checkout distant, delete branch
  5. Workflow type — Exemple complet de collaboration

Prérequis

Avoir un compte GitHub et une clé SSH configurée (voir fiche GitHub 1). Connaître les bases de Git (fiches Git 1 et 2).

1. Lier un dépôt local à GitHub

Une fois un dépôt créé sur GitHub, il faut le lier à votre dépôt local :

CommandeExempleDescription
git remote add origin <url>git remote add origin git@github.com:user/mon-projet.gitAssocie le dépôt distant nommé 'origin' à votre dépôt local.
git push -u origin maingit push -u origin mainEnvoie les commits vers GitHub ET établit le suivi (upstream).
git remote -vgit remote -vAffiche les dépôts distants configurés.
git remote set-url origin <new-url>git remote set-url origin git@github.com:user/nouveau.gitChange l'URL du dépôt distant.
git remote rm <nom>git remote rm originSupprime un dépôt distant.
# Créer un dépôt sur GitHub (via l'interface web)
# Puis en local :
mkdir mon-projet
cd mon-projet
git init
echo "# Mon Projet" > README.md
git add README.md
git commit -m "Premier commit"

# Lier au dépôt GitHub
git remote add origin git@github.com:user/mon-projet.git
git push -u origin main
💡 L'option -u (ou --set-upstream) établit une relation entre la branche locale et la branche distante. Après cela, un simple git push suffira pour cette branche.

2. Cloner un dépôt existant

CommandeExempleDescription
git clone <url>git clone git@github.com:user/mon-projet.gitCopie le dépôt distant dans un dossier local.
git clone <url> <nom>git clone git@github.com:user/mon-projet.git mon-dossierClone dans un dossier spécifique.
git clone --depth 1 <url>git clone --depth 1 git@github.com:user/gros-projet.gitClone superficiel (seul le dernier commit).
git clone --branch <branche> <url>git clone --branch develop git@github.com:user/projet.gitClone une branche spécifique.
# Cloner un projet
git clone git@github.com:user/mon-projet.git
cd mon-projet

# Lister les branches locales et distantes
git branch -a

# Voir le dépôt distant configuré
git remote -v
💡 Après un clone, le dépôt distant 'origin' est automatiquement configuré. Vous pouvez immédiatement commencer à travailler.

3. Synchroniser avec le dépôt distant

CommandeExempleDescription
git pushgit push origin mainEnvoie les commits de la branche courante vers le dépôt distant.
git pullgit pull origin mainRécupère ET fusionne les modifications distantes dans la branche courante.
git fetchgit fetch originRécupère les modifications sans les fusionner (vérifier avant).
git pull --rebasegit pull --rebase origin mainRécupère et rebase (historique linéaire).
git push --tagsgit push --tagsEnvoie les tags (versions) vers le dépôt distant.
⚠️ git pull --rebase peut réécrire l'historique local. Utilisez-le uniquement sur des branches où vous travaillez seul, ou après avoir vérifié que personne d'autre ne travaille sur la même branche.

4. Travailler avec les branches distantes

CommandeExempleDescription
git push origin <branche>git push origin feature-loginPousse une branche locale vers le dépôt distant.
git push -u origin <branche>git push -u origin feature-loginPush + établit le suivi.
git checkout <branche>git checkout feature-loginBascule sur une branche locale existante.
git checkout -b <branche> origin/<branche>git checkout -b develop origin/developCrée une branche locale à partir d'une branche distante.
git branch --track <branche> origin/<branche>git branch --track feature origin/featureCrée une branche locale avec suivi d'une branche distante.
git push origin --delete <branche>git push origin --delete feature-loginSupprime une branche distante.
git branch -d <branche>git branch -d feature-loginSupprime la branche locale (si fusionnée).
# Créer une nouvelle branche et la pousser
git checkout -b feature-login
git add .
git commit -m "Ajout login"
git push -u origin feature-login

# Supprimer la branche distante après fusion
git push origin --delete feature-login
git branch -d feature-login

5. Workflow type (GitHub Flow)

1. Cloner le dépôt
   git clone git@github.com:user/projet.git
   cd projet

2. Créer une branche pour une fonctionnalité
   git checkout -b feature-ajout-contact

3. Travailler et committer
   git add .
   git commit -m "Ajout du formulaire de contact"

4. Pousser la branche sur GitHub
   git push -u origin feature-ajout-contact

5. Ouvrir une Pull Request sur GitHub (interface web)

6. Après validation et merge, revenir sur main
   git checkout main
   git pull origin main

7. Supprimer la branche locale
   git branch -d feature-ajout-contact
💡 Cette méthode (une branche par fonctionnalité + Pull Request) est la plus utilisée en entreprise pour les projets web.
Quelle commande associe un dépôt local à un dépôt GitHub distant ?
  • git connect origin <url>
  • git remote add origin <url>
  • git link origin <url>
  • git remote set <url>

✅ Réponse : git remote add origin <url>

Que fait git push -u origin main ?
  • Il pousse les commits sans établir de suivi
  • Il pousse les commits ET établit le suivi de la branche distante
  • Il supprime la branche distante
  • Il clone le dépôt

✅ Réponse : Il pousse les commits ET établit le suivi de la branche distante

Quelle commande récupère les modifications distantes sans les fusionner ?
  • git pull
  • git fetch
  • git push
  • git clone

✅ Réponse : git fetch

Comment supprimer une branche distante sur GitHub ?
  • git branch -d <branche>
  • git push origin --delete <branche>
  • git remote rm <branche>
  • git branch --delete <branche>

✅ Réponse : git push origin --delete <branche>

Après un clone, quel est le nom par défaut du dépôt distant ?
  • upstream
  • origin
  • remote
  • default

✅ Réponse : origin

🎯 Passer l'évaluation de cette fiche