Section 13.1.2 : Git et GitHub
🎯 Objectif pédagogique
Comprendre et utiliser Git pour le versionnement de code et GitHub pour la collaboration. Vous saurez créer des repositories, committer, brancher, merger et travailler en équipe.
Pourquoi Git est indispensable
Imaginez que vous écrivez un roman. Vous faites des modifications, revenez en arrière, essayez des variantes... Sans système de versionnement, vous finiriez avec des fichiers comme roman_v2_final_VRAIMENT_FINAL_ok.docx. En développement, ce chaos serait catastrophique.
Git est un système de contrôle de version distribué créé en 2005 par Linus Torvalds (le créateur de Linux). Il enregistre chaque modification dans un historique permanent, vous permettant de revenir à n'importe quelle version, travailler en parallèle sur plusieurs fonctionnalités via des branches, et collaborer sans conflits.
Les concepts fondamentaux
Git organise votre travail en trois zones : le Working Directory (vos fichiers actuels), la Staging Area (modifications sélectionnées pour le prochain commit), et le Repository (historique complet des commits).
Configuration initiale
git config --global user.name 'Alice Martin'
git config --global user.email 'alice@example.com'
git config --global core.editor 'code --wait'
git config --global color.ui auto
git config --list
Votre premier repository
mkdir mon-projet && cd mon-projet
git init
touch index.html style.css app.js
echo '# Mon Projet' > README.md
git status
git add .
git commit -m 'Initial commit: structure du projet'
Le cycle de travail quotidien
# 1. Modifier des fichiers
echo '<h1>Hello World</h1>' >> index.html
# 2. Voir les modifications
git status # Fichiers modifiés
git diff # Détail ligne par ligne
# 3. Stager
git add index.html
# 4. Committer
git commit -m 'feat: add heading to homepage'
# 5. Historique
git log --oneline --graph
Conventional Commits
Adoptez cette convention dès le début — feat: nouvelle fonctionnalité, fix: correction, docs: documentation, style: formatage, refactor: restructuration, test: tests. Exemple : feat: add user authentication with Devise
Les branches : travailler en parallèle
Les branches sont la fonctionnalité qui rend Git indispensable en équipe. Une branche est une copie indépendante de votre code pour expérimenter sans casser la version stable.
git checkout -b feature/navbar
# ... coder la fonctionnalité ...
git add .
git commit -m 'feat: add navigation bar'
git checkout main
git merge feature/navbar
git branch -d feature/navbar
GitHub : collaborer dans le cloud
GitHub ajoute à Git des fonctionnalités essentielles : hébergement de repos, pull requests, issues, CI/CD, et un profil qui fait office de CV technique.
git remote add origin https://github.com/alice/mon-projet.git
git push -u origin main
git pull origin main
git clone https://github.com/lewagon/fullstack-challenges.git
Pull Requests et code review
Le workflow professionnel repose sur les Pull Requests : créer une branche, coder, pousser, ouvrir une PR, l'équipe review, merger dans main après approbation.
.gitignore
node_modules/ # Dépendances npm
.env # Variables secrètes
*.log # Logs
.DS_Store # Fichiers macOS
dist/ # Fichiers compilés
Git vs GitHub
← Scroll horizontally →
Que fait la commande git add . ?
Pourquoi ne faut-il JAMAIS committer un fichier .env ?
Apprendre l’IA, du premier prompt aux agents