← Retour au portail

Fiche 2 - Git — Commandes essentielles et workflow de base

Maîtriser les commandes Git du quotidien : init, add, commit, status, log, branch, checkout, merge, push, pull. Avec des exemples concrets et un workflow type.

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

🎯 Objectifs de la fiche

  1. Prérequis et installation — Installer Git et configurer son identité
  2. Les commandes de base — init, add, commit, status, log, diff
  3. Travailler avec les branches — branch, checkout, merge, branch -d
  4. Travailler avec un dépôt distant — remote, clone, push, pull, fetch
  5. Commandes utiles au quotidien — stash, reset, restore, revert
  6. Workflow type — Exemple complet de la création d'une fonctionnalité jusqu'au push

Prérequis

Avoir compris les concepts de la fiche d'introduction (dépôt, commit, branche, etc.). Git doit être installé.

# Installer Git (Debian/Ubuntu)
sudo apt install git -y

# Configurer son identité (obligatoire)
git config --global user.name "Prénom NOM"
git config --global user.email "prenom.nom@exemple.fr"

# Définir la branche par défaut (main plutôt que master)
git config --global init.defaultBranch main

1. Commandes de base

CommandeExempleEffet
git initgit initTransforme le dossier courant en un dépôt Git.
git add <fichier>git add README.mdAjoute le fichier à l'index (staging area).
git add .git add .Ajoute TOUS les fichiers modifiés à l'index.
git commit -m messagegit commit -m 'Ajout du README'Enregistre les fichiers de l'index dans l'historique.
git commit -am messagegit commit -am 'Correction mineure'Add + commit en une commande (fichiers déjà suivis).
git statusgit statusAffiche l'état des fichiers (modifiés, indexés, non suivis).
git log --onelinegit log --onelineAffiche l'historique des commits en une ligne par commit.
git diffgit diffAffiche les modifications non indexées.
git diff --stagedgit diff --stagedAffiche les modifications indexées (en attente de commit).
# Exemple de session de travail
mkdir mon-projet
cd mon-projet
git init

echo "# Mon Projet" > README.md
git add README.md
git commit -m "Premier commit : ajout README"

git status  # devrait afficher : nothing to commit

2. Travailler avec les branches

CommandeExempleEffet
git branchgit branchListe les branches locales.
git branch <nom>git branch feature-loginCrée une nouvelle branche.
git checkout <nom>git checkout feature-loginBascule sur la branche spécifiée.
git checkout -b <nom>git checkout -b feature-loginCrée et bascule en une commande.
git merge <branche>git merge feature-loginFusionne la branche dans la branche courante.
git branch -d <nom>git branch -d feature-loginSupprime la branche (si fusionnée).
git branch -D <nom>git branch -D feature-loginSupprime la branche de force (même non fusionnée).
💡 Pour les projets en entreprise, on utilise souvent un workflow avec main comme branche stable, et des branches feature/ ou hotfix/ pour les développements.

3. Travailler avec un dépôt distant (GitHub/GitLab)

CommandeExempleEffet
git remote add origin <url>git remote add origin git@github.com:user/repo.gitAssocie un dépôt distant.
git remote -vgit remote -vAffiche les dépôts distants configurés.
git clone <url>git clone git@github.com:user/repo.gitCopie un dépôt distant localement.
git push origin maingit push origin mainEnvoie les commits vers le dépôt distant.
git push -u origin maingit push -u origin mainPush + établir le suivi (à faire une fois).
git pull origin maingit pull origin mainRécupère ET fusionne les modifications distantes.
git fetch origingit fetch originRécupère les modifications sans les fusionner.
# Exemple de workflow complet avec dépôt distant
# 1. Créer un dépôt sur GitHub
# 2. Initialiser localement
git init
git add .
git commit -m "Premier commit"

# 3. Lier au distant
git remote add origin git@github.com:user/mon-projet.git

# 4. Premier push
git push -u origin main

4. Commandes de récupération / correction

⚠️ git reset --hard est dangereux : les modifications perdues ne peuvent pas être récupérées facilement. Utilisez --soft quand vous hésitez.
CommandeExempleEffet
git restore <fichier>git restore README.mdAnnule les modifications non commitées d'un fichier.
git stashgit stashSauvegarde temporairement les modifications non commitées.
git stash popgit stash popRestaure les modifications sauvegardées.
git reset HEAD <fichier>git reset HEAD README.mdRetire le fichier de l'index (unstage).
git reset --soft HEAD~1git reset --soft HEAD~1Annule le dernier commit (gardes les modifs).
git reset --hard HEAD~1git reset --hard HEAD~1Annule le dernier commit (perds les modifs).
git revert <hash>git revert abc1234Crée un commit qui annule le commit spécifié.

5. Fichier .gitignore

Le fichier .gitignore liste les fichiers et dossiers que Git doit ignorer (mots de passe, fichiers compilés, dossiers de dépendances...).

# .gitignore — exemple pour un projet Python
__pycache__/
*.pyc
.env
.venv/
node_modules/
*.log
.DS_Store
⚠️ Ne committez jamais de mots de passe, clés API ou tokens. Utilisez des variables d'environnement et listez les fichiers sensibles dans .gitignore.

6. Workflow type (GitHub Flow)

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

2. Travailler, committer
   git add .
   git commit -m "Ajout du formulaire de contact"

3. Pousser la branche
   git push origin feature-ajout-contact

4. Ouvrir une Pull Request sur GitHub

5. Après review et merge, revenir sur main
   git checkout main
   git pull origin main

6. Supprimer la branche locale
   git branch -d feature-ajout-contact
Quelle commande crée un commit avec un message ?
  • git save -m message
  • git commit -m message
  • git push -m message
  • git snapshot message

✅ Réponse : git commit -m message

Quelle commande permet de basculer sur une branche existante ?
  • git branch
  • git checkout
  • git merge
  • git clone

✅ Réponse : git checkout

Que fait git push -u origin main ?
  • Il pousse les commits sans les fusionner
  • Il pousse les commits ET établit le suivi de la branche distante
  • Il télécharge les commits distants
  • Il supprime la branche distante

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

Quelle commande affiche l'historique des commits de manière concise ?
  • git log --oneline
  • git status
  • git diff
  • git branch

✅ Réponse : git log --oneline

À quoi sert le fichier .gitignore ?
  • À indiquer les fichiers à committer obligatoirement
  • À indiquer les fichiers que Git doit ignorer
  • À configurer le dépôt distant
  • À définir les droits d'accès

✅ Réponse : À indiquer les fichiers que Git doit ignorer

🎯 Passer l'évaluation de cette fiche