Leçon 1 sur 9 · Fondamentaux
Pourquoi un gestionnaire de versions ? Installer et configurer Git
Objectif
Comprendre le problème que règle un gestionnaire de versions, installer Git sur votre poste et le configurer correctement (identité, branche par défaut, éditeur) pour que vos premiers commits soient propres dès le départ.
L'essentiel
- Un gestionnaire de versions garde l'historique de chaque modification d'un projet : qui, quoi, quand, pourquoi. On peut revenir en arrière, comparer et travailler à plusieurs sans s'écraser.
- Git est distribué : chaque développeur possède une copie complète de l'historique, et peut travailler sans connexion.
- Avant le premier commit, réglez au minimum
user.nameetuser.email: ils sont gravés dans chaque commit. git configlit et écrit la configuration à trois niveaux :--system(toute la machine),--global(votre compte),--local(un seul dépôt). Le plus proche gagne.git inittransforme un dossier en dépôt : il crée un sous-dossier caché.gitqui contient tout l'historique.
1. Le problème : « index-final-v3-OK-vraiment.html »
Imaginez l'agence Atlas Web, à Casablanca (quartier Maârif) : quatre développeurs construisent le site d'une chaîne de pâtisseries. Sans outil, voici ce qui arrive :
- Youssef envoie
index.htmlpar WhatsApp à Salma, qui le modifie pendant que lui continue de travailler sur sa copie. Le soir, il faut fusionner à la main. - Le client demande « remettez le bandeau d'avant-hier ». Personne ne sait plus quelle version c'était.
- Un bug apparaît en production. Qui a changé quoi, et quand ? Mystère.
- Le dossier partagé contient
site-final.zip,site-final-v2.zip,site-final-corrige-ilyas.zip…
Un gestionnaire de versions répond à toutes ces questions :
| Besoin | Ce que fait Git |
|---|---|
| Revenir en arrière | chaque état enregistré (un commit) peut être restauré |
| Savoir qui a changé quoi | chaque commit porte un auteur, une date et un message |
| Travailler à plusieurs | chacun travaille sur sa branche, puis on fusionne |
| Essayer sans risque | une branche d'essai se jette si l'idée ne marche pas |
| Sauvegarder | chaque copie du dépôt (poste, serveur GitHub ou GitLab) contient tout l'historique |
Centralisé ou distribué
Les anciens outils (CVS, Subversion) étaient centralisés : l'historique vivait sur un seul serveur, et sans réseau on ne pouvait rien enregistrer. Git, créé en 2005 par Linus Torvalds pour développer le noyau Linux, est distribué : votre ordinateur contient le dépôt complet. Vous faites des commits dans le train Casa-Rabat sans connexion, et vous les partagez plus tard.
Git n'est pas GitHub. Git est le logiciel, libre, installé sur votre poste. GitHub, GitLab ou Bitbucket sont des services qui hébergent des dépôts Git et ajoutent des outils autour (revue de code, tickets, CI/CD). Vous les verrez au niveau 2.
2. Installer Git
Git est très souvent déjà présent. Vérifiez d'abord :
git --version
# git version 2.47.2
Si la commande est introuvable, installez-le avec le gestionnaire de paquets de votre système :
# Debian, Ubuntu
sudo apt update && sudo apt install git
# Rocky Linux, AlmaLinux, RHEL, Fedora
sudo dnf install git
# macOS (outils de ligne de commande d'Apple, ou Homebrew)
xcode-select --install
brew install git
Sous Windows, installez « Git for Windows » depuis le site officiel de Git : il fournit git, un terminal Git Bash et un gestionnaire d'identifiants. Vous pouvez aussi travailler sous WSL (un Ubuntu dans Windows) et installer Git avec apt, comme sur un serveur.
Se documenter
git help # les commandes les plus utilisées
git help config # le manuel complet d'une commande (équivaut à man git-config)
git config -h # le résumé court des options
La documentation officielle est aussi en ligne, commande par commande, sur le site de Git.
3. Configurer son identité
Chaque commit enregistre un nom et une adresse e-mail. Sans eux, Git refuse de committer ou invente une identité à partir du nom de la machine, ce qui donne des historiques illisibles (« root@pc-salle3 »).
git config --global user.name "Salma Bennani"
git config --global user.email "salma@agence-atlas.ma"
Utilisez l'adresse de votre compte GitHub ou GitLab : c'est grâce à elle que le site relie vos commits à votre profil.
Vérifiez :
git config --global user.name
# Salma Bennani
git config --list --show-origin
# file:/root/.gitconfig user.name=Salma Bennani
# file:/root/.gitconfig user.email=salma@agence-atlas.ma
Les trois niveaux de configuration
| Option | Fichier | Portée |
|---|---|---|
--system |
/etc/gitconfig |
tous les utilisateurs de la machine |
--global |
~/.gitconfig (ou ~/.config/git/config) |
votre compte, tous vos dépôts |
--local (par défaut dans un dépôt) |
.git/config du dépôt |
ce dépôt seulement |
Le niveau le plus précis l'emporte. Cas typique : un freelance qui travaille pour Atlas Web et pour ses propres clients garde son adresse personnelle en global, et met l'adresse de l'agence uniquement dans les dépôts de l'agence :
cd ~/projets/patisserie-atlas
git config user.email "karim@agence-atlas.ma" # --local : ce dépôt uniquement
git config --show-origin user.email
# file:.git/config karim@agence-atlas.ma
Le fichier ~/.gitconfig est un simple fichier texte, lisible et modifiable :
[user]
name = Salma Bennani
email = salma@agence-atlas.ma
[init]
defaultBranch = main
4. Les autres réglages utiles
# Nom de la branche créée par git init (sinon « master » sur beaucoup de versions)
git config --global init.defaultBranch main
# Éditeur utilisé pour écrire les messages de commit longs
git config --global core.editor "nano" # ou "vim", ou "code --wait" pour VS Code
# Couleurs dans le terminal (activées par défaut sur les versions récentes)
git config --global color.ui auto
# Fins de ligne : sous Windows, convertir CRLF/LF automatiquement
git config --global core.autocrlf true # Windows
git config --global core.autocrlf input # Linux et macOS
# Des raccourcis personnels (alias)
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"
Pour lire ou supprimer un réglage :
git config --global --get core.editor
git config --global --unset alias.st
Fins de ligne. Dans une équipe mixte Windows/Linux, un fichier peut sembler « entièrement modifié » simplement parce que les fins de ligne ont changé. Réglez
core.autocrlfdès le départ ; vous verrez au niveau 3 qu'un fichier.gitattributespermet d'imposer la règle à toute l'équipe.
5. Créer son premier dépôt
mkdir -p ~/projets/vitrine
cd ~/projets/vitrine
git init
# Initialized empty Git repository in /root/projets/vitrine/.git/
ls -a
# . .. .git
Le dossier .git est le dépôt : historique, branches, configuration locale. Le reste du dossier est votre copie de travail. Ne modifiez jamais .git à la main, et ne le supprimez pas : vous perdriez tout l'historique.
git init accepte aussi un chemin : git init /srv/projets/vitrine crée le dossier si besoin.
Créons un premier fichier et enregistrons-le :
echo '<h1>Pâtisserie Atlas</h1>' > index.html
git status
# On branch main
# No commits yet
# Untracked files:
# index.html
git add index.html # « je veux enregistrer ce fichier »
git commit -m "Premier commit : page d'accueil"
# [main (root-commit) 3f2a9c1] Premier commit : page d'accueil
# 1 file changed, 1 insertion(+)
git log --oneline
# 3f2a9c1 (HEAD -> main) Premier commit : page d'accueil
Vous venez de faire votre premier commit. La leçon suivante explique en détail les trois zones de Git (copie de travail, index, dépôt) et les commandes add, commit, status, log et diff.
6. Le vocabulaire de base
| Terme | Signification |
|---|---|
| dépôt (repository) | le projet suivi par Git, avec tout son historique (le dossier .git) |
| commit | un instantané enregistré du projet, avec auteur, date et message |
| hash (ou SHA) | l'identifiant unique d'un commit, par exemple 3f2a9c1… (40 caractères, souvent abrégés à 7) |
| branche | une ligne de développement ; main est la branche principale |
| HEAD | « là où vous êtes » : le commit (et en général la branche) actuellement extrait |
| distant (remote) | une autre copie du dépôt, souvent sur GitHub ou GitLab |
Pièges fréquents
- Committer avec une mauvaise identité : vérifiez
git config user.emaildans chaque nouveau dépôt si vous avez plusieurs comptes. Une adresse qui ne correspond à aucun compte GitHub donne des commits « orphelins ». git initdans le mauvais dossier (votre dossier personnel entier, par exemple) :git statusaffiche alors des milliers de fichiers. Supprimez simplement le.gitcréé par erreur avecrm -rf ~/.git, après avoir vérifié le chemin.- Confondre Git et GitHub : on peut utiliser Git toute sa vie sans compte GitHub ; un dépôt local est un dépôt complet.
- Oublier
-m: sans message,git commitouvre l'éditeur configuré. Si c'estvimet que vous êtes perdu, tapezÉchap, puis:q!etEntréepour annuler.
Lab
Dans ce lab (un conteneur Debian avec Git), vous partez d'une machine où Git n'a jamais été configuré :
- vous enregistrez votre identité globale ;
- vous réglez la branche par défaut sur
main; - vous créez le dépôt
/root/vitrineavecgit init; - vous y faites votre premier commit avec un fichier
index.html.
Vérifiez votre travail avec git config --list, git status et git log --oneline.
Quiz
- Citez deux problèmes concrets qu'un gestionnaire de versions résout dans une équipe.
- Que signifie « Git est distribué » ?
- Quelle différence entre
git config --globaletgit config --local? Lequel l'emporte ? - Que contient le dossier
.gitcréé pargit init? - Pourquoi faut-il régler
user.emailavant le premier commit ?
Réponses
- Par exemple : retrouver une ancienne version d'un fichier, savoir qui a modifié quoi et quand, permettre à plusieurs personnes de travailler en même temps sans écraser le travail des autres.
- Chaque copie du dépôt contient tout l'historique : on peut committer, consulter le journal ou créer des branches sans serveur ni réseau.
--globals'applique à tous vos dépôts (fichier~/.gitconfig) ;--localà un seul dépôt (.git/config). Le réglage local l'emporte, car il est plus précis.- Tout le dépôt : l'historique des commits, les branches, les étiquettes et la configuration locale. Le supprimer revient à perdre l'historique.
- Parce que l'identité est gravée dans chaque commit et sert à relier les commits à votre compte GitHub ou GitLab ; la corriger après coup oblige à réécrire l'historique.
Sources de référence : documentation officielle de Git (git-scm.com). Texte original MasterLinux.