Theme
Lecon 3 / 8NouvelleMAJ 27 nov. 2025
Parcours Cours Git pour débutants

Concepts de base de Git

Git organise ton travail en trois zones principales :

#git#concepts#repository#commit#branches#staging

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.json

Le 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 remote
  • git pull : récupère les commits du remote
  • git fetch : télécharge les commits sans les fusionner

Convention de nommage :

  • origin : nom par défaut du remote principal
  • upstream : souvent utilisé pour le repo original d'un fork

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
*.log

Règles communes :

  • *.log : ignore tous les fichiers .log
  • node_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 --- E

Types 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)

Liens vers la partie suivante


Tags

#git #concepts #repository #commit #branches #staging