Concepts de base de Git
Git organise ton travail en trois zones principales :
Progression
3 / 8
Derniere mise a jour
27 nov. 2025
Etat
Nouveau
Les trois zones de Git
Git organise ton travail en trois zones principales :
┌─────────────────────┐
│ Working Directory │ ← Vos fichiers actuels
│ (Répertoire de │
│ travail) │
└──────────┬──────────┘
│ git add
▼
┌─────────────────────┐
│ Staging Area │ ← Fichiers prêts à être enregistrés
│ (Index) │
└──────────┬──────────┘
│ git commit
▼
┌─────────────────────┐
│ Repository │ ← Historique permanent
│ (Dépôt Git) │
└─────────────────────┘
Working Directory : tes fichiers tels que tu les vois et modifies.
Staging Area (Index) : une zone intermédiaire où tu prépares les modifications à enregistrer.
Repository : la base de données Git contenant tout l'historique des commits.
Repository (Dépôt)
Un repository (ou "repo") est un dossier contenant ton projet et tout son historique Git.
mon-projet/
├── .git/ # Dossier caché contenant tout Git
├── src/
├── README.md
└── package.jsonLe dossier .git/ contient :
- Tout l'historique des commits
- Les branches
- La configuration Git
- Les références distantes
Commit
Un commit est une photo (snapshot) de votre projet à un moment donné.
Chaque commit contient :
- Les modifications apportées aux fichiers
- Un message décrivant les changements
- L'auteur et la date
- Un hash unique (identifiant SHA-1)
- Le commit parent (lien vers le commit précédent)
commit a3f5b21c8d...
Author: Votre Nom <email@example.com>
Date: Mon Nov 27 14:30:00 2025
feat: ajout de la fonctionnalité de connexion
Branches
Une branche est une ligne de développement indépendante. C'est l'une des fonctionnalités les plus puissantes de Git.
main: A --- B --- C --- D
\
feature: E --- F
Branche principale : généralement appelée main (anciennement master).
Branches de fonctionnalités : créées pour développer de nouvelles features sans toucher à main.
Avantages :
- Travailler sur plusieurs fonctionnalités en parallèle
- Expérimenter sans risque
- Faciliter la collaboration en équipe
- Isoler les bugs à corriger
Remote (Dépôt distant)
Un remote est une version de votre repository hébergée sur Internet ou un réseau.
Votre ordinateur Internet (GitHub/GitLab)
┌──────────────┐ ┌──────────────┐
│ Repository │ <--> │ Repository │
│ local │ push │ distant │
│ │ pull │ (remote) │
└──────────────┘ └──────────────┘
Commandes principales :
git push: envoie vos commits vers le remotegit pull: récupère les commits du remotegit fetch: télécharge les commits sans les fusionner
Convention de nommage :
origin: nom par défaut du remote principalupstream: souvent utilisé pour le repo original d'un fork
HEAD
HEAD est un pointeur spécial qui indique où tu es actuellement dans l'historique.
main: A --- B --- C ← HEAD, main
\
feature: D --- E
HEAD pointe généralement vers le dernier commit de la branche active.
Détached HEAD : quand HEAD ne pointe pas vers une branche (état temporaire après un checkout sur un commit spécifique).
Fichiers suivis et non suivis
Git distingue plusieurs états pour tes fichiers :
Untracked (non suivi) : fichier nouveau, jamais ajouté à Git.
Tracked (suivi) : fichier connu de Git.
Modified (modifié) : fichier suivi qui a été changé.
Staged (indexé) : fichier modifié prêt à être commité.
Committed (enregistré) : modifications sauvegardées dans le repository.
Nouveau fichier → Untracked
↓ git add
Staged (dans l'index)
↓ git commit
Committed (dans le repo)
↓ modification
Modified
↓ git add
Staged
↓ git commit
Committed
.gitignore
Le fichier .gitignore liste les fichiers que Git doit ignorer.
Exemple de .gitignore :
# Dépendances
node_modules/
venv/
# Fichiers de build
dist/
build/
*.pyc
# Fichiers système
.DS_Store
Thumbs.db
# Fichiers sensibles
.env
secrets.json
*.logRègles communes :
*.log: ignore tous les fichiers.lognode_modules/: ignore le dossier complet!important.log: exception (ne pas ignorer ce fichier)docs/*.pdf: ignore les PDF dans docs/ uniquement
Tags
Un tag est un marqueur permanent sur un commit spécifique, utilisé principalement pour marquer des versions.
v1.0.0 v1.1.0 v2.0.0
↓ ↓ ↓
A --- B --- C --- D --- ETypes de tags :
- Lightweight : simple pointeur vers un commit
- Annotated : contient métadonnées (auteur, date, message)
Utilisation : marquer les releases de votre application (v1.0.0, v2.1.3, etc.).
Merge et Rebase
Deux façons de combiner des branches :
Merge : crée un commit de fusion.
main: A --- B --- C ------- M
\ /
feature: D --- E --- F
Rebase : réécrit l'historique en déplaçant les commits.
main: A --- B --- C --- D' --- E' --- F'
Résumé visuel
Working Directory → Staging Area → Repository → Remote
↓ ↓ ↓ ↓
Modifier git add git commit git push
fichiers (indexer) (enregistrer) (publier)