Les bases de Git figurent parmi les compétences les plus importantes du développement logiciel moderne, car Git est un système de contrôle de version distribué qui enregistre chaque modification apportée à votre code. Que vous travailliez seul ou en équipe, Git vous donne le pouvoir d'annuler vos erreurs, de voir qui a changé quoi et quand, et de travailler en parallèle sur les mêmes fichiers. Dans cet article, nous expliquerons clairement les notions de dépôt, de zone de staging, de commit et de branche, et montrerons chaque étape avec de vraies commandes.
Concepts fondamentaux : dépôt, zone de staging, commit
Pour apprendre les bases de Git, il faut d'abord poser le vocabulaire. Trois notions sont souvent confondues :
- Dépôt (repository) : la base de données qui stocke tout l'historique de votre projet, conservée dans le dossier caché
.git. - Répertoire de travail (working directory) : les fichiers réels que vous éditez en ce moment.
- Zone de staging (index) : une couche intermédiaire où vous choisissez exactement quelles modifications iront dans le prochain commit.
- Commit : un instantané enregistré de façon permanente des modifications stagées, accompagné d'un message et d'un identifiant unique (hash).
Le flux est le suivant : vous éditez un fichier → vous le stagez avec git add → vous l'écrivez dans le dépôt avec git commit.
Initialiser un nouveau dépôt et le premier commit
Au début d'un nouveau projet, vous initialisez Git à l'intérieur du dossier. Votre première tâche est de définir votre identité et de créer le dépôt :
git config --global user.name "Votre Nom"
git config --global user.email "vous@exemple.com"
mkdir monprojet
cd monprojet
git init
La commande git init crée un dépôt .git vide dans le dossier. Ajoutons maintenant un fichier et vérifions l'état :
git status
git add index.html
git add .
git commit -m "Premier commit : squelette du projet"
git status montre quels fichiers ont changé et lesquels sont stagés ; c'est la commande que vous utiliserez le plus. git add . stage toutes les modifications ; git commit -m finalise l'enregistrement avec un message d'une ligne. Rédigez des messages courts et significatifs à l'impératif (par ex. « Ajoute la validation du formulaire de connexion »).
Lire l'historique : git log et git status
Pour voir les commits que vous avez réalisés, utilisez git log :
git log
git log --oneline --graph --decorate
--oneline condense chaque commit en une seule ligne, tandis que --graph dessine visuellement la structure des branches. La courte chaîne au début de chaque ligne est l'identifiant unique (hash) de ce commit, et vous pouvez revenir à n'importe quel point grâce à lui. git status répond toujours à la question « où en suis-je en ce moment ? ».
Branch et merge : la base du travail en parallèle
Une branche est un pointeur mobile qui vous permet de vous détacher du code principal et de travailler de manière indépendante. Pour essayer une nouvelle fonctionnalité, vous travaillez sur une branche séparée sans casser la branche principale (généralement main) :
git branch feature-login
git switch feature-login
# La même chose dans les anciennes versions de Git :
git checkout -b feature-login
Ici git switch est la commande moderne et facile à lire ; git checkout -b crée la branche et y bascule en une seule étape. Après quelques commits sur la branche, une fois terminé, vous ramenez les modifications dans la branche principale avec un merge (fusion) :
git switch main
git merge feature-login
# Nettoyez la branche fusionnée :
git branch -d feature-login
Si deux branches modifient les mêmes lignes du même fichier de manière différente, Git signale un conflit. Dans ce cas, vous ouvrez le fichier, corrigez manuellement les sections entre les marqueurs <<<<<<< et >>>>>>>, puis terminez la fusion avec git add + git commit.
Travailler avec des dépôts distants : clone, pull, push
Comme Git est distribué, le code est généralement partagé sur un dépôt distant (remote) tel que GitHub ou GitLab. Pour télécharger un projet existant :
git clone https://github.com/utilisateur/projet.git
Pour connecter votre propre dépôt local à un remote existant et l'envoyer :
git remote add origin https://github.com/utilisateur/projet.git
git push -u origin main
Le cycle quotidien est simple : utilisez git pull pour récupérer les modifications de vos coéquipiers, et git push pour téléverser vos propres commits :
git pull
git push
Le -u dans le premier git push -u origin main lie la branche locale à la branche distante ; ensuite, un simple git push suffit.
Exclure les fichiers inutiles avec .gitignore
Les dossiers de dépendances, les sorties de build et les clés secrètes ne doivent jamais entrer dans le dépôt. Vous créez un fichier .gitignore à la racine du projet pour déclarer quels fichiers ignorer :
node_modules/
vendor/
.env
*.log
/dist
.DS_Store
Une règle importante : .gitignore ne fonctionne que pour les fichiers qui ne sont pas encore suivis. Si vous avez déjà commité un fichier par erreur, vous devez d'abord le retirer du suivi avec git rm --cached fichier.
Foire aux questions
Quelle est la différence entre git add et git commit ?
git add déplace les modifications dans la zone de staging, comme pour dire « je veux enregistrer ceci » ; git commit écrit ensuite définitivement ces modifications stagées dans le dépôt avec un message. Sans add, un commit n'enregistre rien.
Y a-t-il une différence entre git checkout et git switch ?
Les deux peuvent changer de branche. git switch est une commande plus récente et plus claire, conçue uniquement pour les opérations de branche ; git checkout change de branche et restaure aussi des fichiers, il est donc plus complexe. Les débutants ont intérêt à utiliser git switch.
Comment corriger le message de mon dernier commit ?
Si vous n'avez pas encore pushé, vous pouvez réécrire le dernier commit avec git commit --amend -m "Nouveau message". Après un push, modifier l'historique affecte vos coéquipiers, alors soyez prudent.
Vous souhaitez mettre en place un workflow Git et de déploiement solide pour votre projet ? Si vous avez besoin d'aide pour le contrôle de version, la qualité du code et l'automatisation, contactez-moi — concevons ensemble un flux de travail adapté à votre projet.