Git & GitHub - Les bases
Tout ce qu'il faut savoir pour démarrer avec Git et GitHub : installation, premier dépôt, cycle de travail et règles de push.
1. Présentation
Qu'est-ce que Git ?
Git est un système de contrôle de version décentralisé (DVCS). Il permet de :
- Suivre l'historique des modifications d'un projet (code, texte, etc.)
- Travailler à plusieurs sur un même projet sans écraser le travail des autres
- Revenir en arrière à n'importe quel état antérieur du projet
- Travailler en parallèle sur différentes fonctionnalités grâce aux branches
Décentralisé
Chaque développeur possède une copie complète du dépôt (historique inclus), contrairement aux systèmes centralisés (comme SVN).
Qu'est-ce que GitHub ?
GitHub est une plateforme d'hébergement de dépôts Git en ligne. Elle ajoute à Git :
- Un espace de stockage distant (remote)
- Des outils de collaboration : Pull Requests, Issues, Projects, Actions (CI/CD)
- Une gestion des droits d'accès et des équipes
- Une interface web pour visualiser le code, l'historique, les statistiques
Retiens
Git = l'outil (local) ; GitHub = le service d'hébergement (distant). D'autres alternatives existent : GitLab, Bitbucket.
Concepts clés
| Terme | Définition |
|---|---|
| Repository (dépôt) | Dossier contenant le projet et son historique Git |
| Commit | Instantané des modifications à un instant T, avec un message descriptif |
| Branch (branche) | Ligne de développement indépendante |
| Remote | Dépôt distant (ex : GitHub) |
| Clone | Copie locale d'un dépôt distant |
| Push | Envoi des commits locaux vers le dépôt distant |
| Pull | Récupération des commits distants vers le local |
| Merge | Fusion de deux branches |
| HEAD | Pointeur vers le commit/branche actuellement actif |
2. Installation et configuration
Installation
Configuration initiale (obligatoire)
Configuration recommandée
# Éditeur par défaut
git config --global core.editor "code --wait"
# Nom de branche par défaut
git config --global init.defaultBranch main
# Couleurs dans le terminal
git config --global color.ui auto
# Vérifier la configuration
git config --list
Authentification GitHub
Depuis août 2021
GitHub n'accepte plus les mots de passe classiques en ligne de commande. Deux méthodes sont possibles :
3. Création d'un dépôt
Méthode 1 : créer localement puis lier à GitHub
# Initialiser un dépôt Git local
mkdir mon-projet
cd mon-projet
git init
# Créer un premier fichier
echo "# Mon Projet" > README.md
# Ajouter et commiter
git add README.md
git commit -m "Initial commit"
# Créer le dépôt sur GitHub (via l'interface web ou gh CLI), puis lier :
git remote add origin git@github.com:utilisateur/mon-projet.git
# Premier push
git push -u origin main
Méthode 2 : créer sur GitHub puis cloner
- Sur GitHub : bouton New repository
- Choisir un nom, une visibilité (public/privé), cocher éventuellement « Add a README »
- Cloner en local :
Avec la CLI GitHub (gh)
4. Cycle de travail de base
Le cycle Git repose sur trois zones :
Répertoire de travail → Zone d'index (staging) → Dépôt local → Dépôt distant
(working dir) (git add) (git commit) (git push)
Commandes essentielles
# Voir l'état du dépôt (fichiers modifiés, non suivis, etc.)
git status
# Ajouter des fichiers à l'index
git add fichier.txt # un fichier précis
git add dossier/ # un dossier
git add . # tout ce qui a changé
git add -p # ajouter interactivement par morceaux (hunks)
# Créer un commit
git commit -m "Message clair et concis"
# Ajouter et commiter en une commande (fichiers déjà suivis uniquement)
git commit -am "Message"
# Voir l'historique
git log
git log --oneline --graph --all # vue compacte et graphique
# Voir les différences
git diff # working dir vs index
git diff --staged # index vs dernier commit
# Récupérer les changements distants
git pull
# Envoyer les changements
git push
Rédiger un bon message de commit
type(portée): résumé court à l'impératif (≤ 50 caractères)
Corps du message expliquant le POURQUOI (pas seulement le quoi),
si nécessaire. Limité à ~72 caractères par ligne.
Convention Conventional Commits
Types courants : feat, fix, docs, style, refactor, test, chore.
Exemple :
5. Règles et bonnes pratiques pour le push
Règles essentielles
Ne jamais
- Pusher directement sur
main/masterdans un projet collaboratif → passer par des branches et des Pull Requests. - Pusher de secrets (mots de passe, clés API, fichiers
.env) → utiliser un.gitignore. - Forcer un push (
--force) sur une branche partagée sans prévenir l'équipe.
Bons réflexes
- Toujours faire
git pullavant de push pour éviter les conflits inutiles. - Un commit = une intention claire. Éviter les commits fourre-tout (« fix », « wip », « changes »).
- Tester avant de pusher : s'assurer que le code compile/passe les tests localement.
- Pusher souvent, mais des commits propres : des petits commits fréquents plutôt qu'un énorme commit final.
Push simple
Premier push d'une nouvelle branche
Push forcé (à utiliser avec prudence)
# Dangereux : écrase l'historique distant
git push --force
# Plus sûr : échoue si quelqu'un d'autre a poussé entre-temps
git push --force-with-lease
Règle d'or
--force-with-lease doit rester réservé à vos propres branches personnelles (feature branches), jamais à main.
Protection de branche (côté GitHub)
Dans Settings > Branches > Branch protection rules, on peut configurer :
- Interdiction du push direct sur
main - Obligation de passer par une Pull Request
- Obligation d'une revue de code avant fusion
- Obligation que les tests CI passent avant fusion
Lien vers source : Git Documentation · GitHub Docs