Git et Contrôle de Version : Commandes de Base et Workflows
Git est l'outil fondamental du développement logiciel moderne. Ce guide couvre les commandes de base de Git, les stratégies de branching et les workflows.
Mise à jour :Qu'est-ce que Git et pourquoi l'utiliser ?
Git est un système de contrôle de version distribué. Il suit les changements de code, gère différentes versions et facilite la collaboration en équipe.
Structure distribuée : Chaque développeur a une copie complète du repository. Cela permet le travail hors ligne et des opérations rapides.
Branching : Créez des branches séparées pour différentes fonctionnalités ou corrections. Cela garde le code principal (main/master) toujours stable.
Merge et rebase : Fusionnez les branches dans la branche principale. Merge préserve l'historique des commits. Rebase crée un historique linéaire.
Commandes Git de Base
git init : Crée un nouveau repository. git clone <url> : Copie un repository existant.
git add <file> : Ajoute les changements à la staging area. git add . : Ajoute tous les changements.
git commit -m "message" : Commit les changements stagés. Écrivez des messages de commit significatifs.
git status : Vérifie l'état du repository. git log : Affiche l'historique des commits.
git diff : Voit les différences entre le répertoire de travail et la staging area. git diff --staged : Voit les différences entre la staging area et le dernier commit.
Branching et Merging
git branch <name> : Crée une nouvelle branche. git checkout <name> ou git switch <name> : Bascule vers la branche.
git merge <branch> : Fusionne la branche dans la branche actuelle. Utilise fast-forward merge ou three-way merge.
Conflit de merge : Résolution manuelle requise pour les changements conflictuels. Éditez les fichiers conflictuels, marquez avec git add, complétez avec git commit.
git branch -d <name> : Supprime la branche. git branch -D <name> : Force la suppression d'une branche non fusionnée.
Opérations de Repository Distant
git remote add origin <url> : Ajoute un repository distant. git remote -v : Liste les remotes.
git push origin <branch> : Envoie les changements locaux au remote. git push -u origin main : Définit la branche upstream.
git pull : Récupère et fusionne les changements distants. git fetch : Récupère les changements distants (sans fusion).
git push --force : Met à jour forcément la branche distante (utiliser avec précaution). git push --force-with-lease : Force push plus sûr.
Stratégies de Branching
Git Flow : main (production), develop (développement), feature/* (nouvelles fonctionnalités), release/* (préparation de version), hotfix/* (corrections urgentes).
GitHub Flow : branche main + branches de fonctionnalités. Chaque branche de fonctionnalité est fusionnée dans main via pull request. Simple et efficace.
Trunk-Based Development : Une seule branche main, branches de fonctionnalités de courte durée (1-2 jours). Combiné avec l'intégration continue (CI/CD).
Critères de sélection : Git Flow pour les grands projets, GitHub Flow pour les projets petits-moyens, Trunk-Based Development pour les équipes avec CI/CD mature.
Meilleures Pratiques
Messages de commit : Utilisez le mode impératif ('Add feature' pas 'Added feature'). Limitez la première ligne à 50 caractères, les détails à 72 caractères.
Commits atomiques : Chaque commit doit contenir un seul changement. Divisez les grands changements en petits commits.
Nommage des branches : Utilisez des noms descriptifs comme feature/user-authentication, bugfix/login-error, hotfix/security-patch.
.gitignore : Ignorez les fichiers inutiles (node_modules, .env, build/). Utilisez les templates gitignore de GitHub.
Pull request : Utilisez les pull requests pour la revue de code. Chaque changement doit être revu par au moins une personne.