Cours Vibe coding avec l'IA · Module 2: Configuration de Next.js
Git et GitHub - Le contrôle de version pour les pirates
Dans cette leçon14
Tout programmeur doit connaître Git - un système de contrôle de version. C'est comme le journal de bord d'un navire - tu enregistres l'historique des changements de ton code.
Qu'est-ce que Git ?
Git est un système de contrôle de version - il te permet de :
- Enregistrer l'historique des changements de code
- Revenir à des versions antérieures
- Collaborer avec d'autres développeurs
- Créer des branches - travailler sur plusieurs fonctionnalités en parallèle
- Suivre qui a changé quoi et quand
Git vs GitHub :
- Git - outil local (sur ton ordinateur)
- GitHub - plateforme en ligne pour stocker du code (comme Dropbox pour les développeurs)
Installer Git
Windows :
Télécharge depuis : https://git-scm.com/install/windows
Pendant l'installation, choisis :
- Git Bash
- Git from the command line
- Use Vim (ou Nano si tu préfères)
Mac :
Vérifie si tu as déjà Git :
1git --versionS'il manque, macOS propose d'installer les Xcode Command Line Tools (Git en fait partie). Tu peux aussi taper toi-même xcode-select --install ou installer Git via Homebrew :
1brew install gitLinux (Ubuntu/Debian) :
1sudo apt-get update
2sudo apt-get install gitConfigurer Git - Premiers pas
Après l'installation, configure Git avec tes informations :
1git config --global user.name "Jack Sparrow"
2git config --global user.email "jack@blackpearl.com"Pourquoi est-ce important ? Chaque commit (changement enregistré) portera ton nom et ton email - c'est comme une signature dans le journal de bord.
Vérifie la configuration :
1git config --listInitialiser un projet Git
Tu as deux scénarios :
Scénario 1 : Nouveau projet (local)
Quand tu crées un nouveau projet Next.js, Git est déjà initialisé automatiquement !
create-next-app le fait pour toi. Vérifie :
1ls -laTu verras un dossier .git/ - c'est le dépôt Git.
Scénario 2 : Dossier existant (sans Git)
Si tu as un dossier sans Git :
1cd my-project
2git initCela va créer un dossier .git/ et initialiser le dépôt.
Commandes Git de base
1. git status - État du dépôt
Vérifie ce qui a changé :
1git statusTu verras :
- Untracked files - nouveaux fichiers que Git ne suit pas
- Modified files - fichiers modifiés
- Staged files - fichiers prêts pour le commit
1On branch main
2Changes not staged for commit:
3 modified: app/page.tsx
4
5Untracked files:
6 app/pirates/page.tsx2. git add - Ajouter des fichiers au staging
La staging area est une « salle d'attente » avant le commit.
1# Ajouter un fichier
2git add app/page.tsx
3
4# Ajouter tous les fichiers
5git add .
6
7# Ajouter tous les fichiers .tsx, aussi dans les sous-dossiers (guillemets : c'est Git qui développe le motif, pas le terminal)
8git add "*.tsx"Après git add, les fichiers sont staged - prêts à être enregistrés (committés).
3. git commit - Enregistrer les changements
Un commit est comme un point de contrôle dans un jeu - tu sauvegardes l'état du code.
1git commit -m "Add pirate landing page"-m signifie message - une courte description de ce que tu as changé.
Bons messages de commit :
- « Add hero section to landing page »
- « Fix button hover animation »
- « Update Pirate interface with level field »
Mauvais messages de commit :
- « changes »
- « fix »
- « asdfghjk »
- « WIP » (Work In Progress - seulement de manière temporaire)
4. git log - Historique des commits
Consulte l'historique de tous les commits :
1git logTu verras :
1commit a3f5b8c (HEAD -> main)
2Author: Jack Sparrow <jack@blackpearl.com>
3Date: Sun Nov 24 10:30:00 2024 +0100
4
5 Add pirate landing page
6
7commit b2e4a9d
8Author: Jack Sparrow <jack@blackpearl.com>
9Date: Sun Nov 24 09:15:00 2024 +0100
10
11 Initial commitRaccourcis :
1# Version courte (1 ligne par commit)
2git log --oneline
3
4# Les 5 derniers commits
5git log -5
6
7# Avec le graphe des branches
8git log --graph --oneline5. git diff - Voir les changements
Compare les fichiers actuels avec la version staged/committée :
1# Changements non ajoutés au stage
2git diff
3
4# Changements dans les fichiers staged
5git diff --stagedTu verras :
1diff --git a/app/page.tsx b/app/page.tsx
2--- a/app/page.tsx
3+++ b/app/page.tsx
4@@ -1,5 +1,5 @@
5 export default function Home() {
6 return (
7- <h1>Hello World</h1>
8+ <h1>Ahoy, Pirates!</h1>
9 )
10 }.gitignore - Ignorer des fichiers
Certains fichiers ne devraient PAS être dans Git :
node_modules/- dossier énorme (des centaines de Mo).env.local- secrets (clés API, mots de passe).next/- build outputdist/,build/- fichiers compilés
Le fichier .gitignore indique à Git ce qu'il doit ignorer :
1# .gitignore
2node_modules/
3.next/
4.env.local
5.env
6.DS_Store
7*.logNext.js crée automatiquement .gitignore - tu l'as déjà configuré !
Branching - Les branches de travail
Une branche est une ligne de développement distincte du projet. Tu peux travailler sur une nouvelle fonctionnalité sans toucher au code principal.
Créer une branche
1# Créer une nouvelle branche
2git branch feature/landing-page
3
4# Basculer vers la nouvelle branche
5git checkout feature/landing-page
6
7# Ou une seule commande (créer + basculer)
8git checkout -b feature/landing-pageConvention de nommage :
feature/name- nouvelle fonctionnalitéfix/name- correction de bugrefactor/name- refactoringdocs/name- documentation
Basculer entre les branches
1# Voir toutes les branches
2git branch
3
4# Basculer vers main
5git checkout main
6
7# Basculer vers la branche feature
8git checkout feature/landing-pageFusionner des branches
Quand tu termines une fonctionnalité, tu fusionnes les changements dans main :
1# Basculer vers main
2git checkout main
3
4# Fusionner les changements de la branche feature
5git merge feature/landing-pageFast-forward merge :
Si main n'a pas changé, Git déplace simplement le pointeur - c'est la fusion la plus simple.
3-way merge : Si les deux branches ont de nouveaux commits, Git crée un nouveau commit de fusion.
Supprimer une branche
Après la fusion, tu peux supprimer la branche :
1git branch -d feature/landing-pageGitHub - Le dépôt distant
GitHub est comme une île au trésor - un endroit où tu stockes tes trésors (le code).
Créer un dépôt sur GitHub
- Va sur : https://github.com
- Clique sur le bouton vert « New » (ou « New repository »)
- Remplis :
- Repository name :
krakens-call - Description : « Epic pirate game built with Next.js »
- Public ou Private (à ton choix)
- NE COCHE PAS « Initialize with README » (tu as déjà un projet local)
- Repository name :
- Clique sur « Create repository »
Connecter le projet local avec GitHub
GitHub va te donner des commandes - copie-les :
1# Ajouter le dépôt distant
2git remote add origin https://github.com/username/krakens-call.git
3
4# Renommer la branche en main (si nécessaire)
5git branch -M main
6
7# Envoyer le code vers GitHub
8git push -u origin mainExplication :
origin- nom du dépôt distant (convention par défaut)-u- définit l'upstream (branche par défaut pour push/pull)main- nom de la branche
git push - Envoyer les changements
Chaque commit local → envoyé vers GitHub :
1# Envoyer tous les commits vers origin/main
2git push
3
4# Envoyer une branche précise
5git push origin feature/landing-pagegit pull - Télécharger les changements
Si tu travailles en équipe, d'autres peuvent introduire des changements :
1# Télécharger les changements depuis GitHub et les fusionner dans la branche locale
2git pull
3
4# Pull depuis une branche précise
5git pull origin mainpull = fetch + merge :
git fetch- télécharge les changementsgit merge- les fusionne dans ta branche
git clone - Cloner un dépôt
Télécharger un projet existant depuis GitHub :
1git clone https://github.com/username/krakens-call.git
2cd krakens-call
3npm install
4npm run devWorkflow avec Git et GitHub
Workflow typique du pirate :
1. Nouvelle fonctionnalité
1# Créer une branche
2git checkout -b feature/pirate-profile
3
4# Travailler sur le code...
5# Modifier app/profile/page.tsx
6
7# Vérifier les changements
8git status
9git diff
10
11# Ajouter au stage
12git add app/profile/
13
14# Commit
15git commit -m "Add pirate profile page with stats"
16
17# Push vers GitHub
18git push origin feature/pirate-profile2. Pull Request sur GitHub
- Va sur GitHub
- Tu verras une bannière : « feature/pirate-profile had recent pushes »
- Clique sur « Compare & pull request »
- Remplis :
- Title : « Add pirate profile page »
- Description : ce que tu as fait, pourquoi, des captures d'écran
- Clique sur « Create pull request »
Une Pull Request (PR) est une demande de fusion des changements de ta branche dans main. L'équipe peut faire une revue de code.
3. Revue et fusion
- D'autres développeurs relisent le code
- Ils laissent des commentaires
- Tu fais des corrections (nouveaux commits sur la même branche)
- Quand tout est OK, quelqu'un clique sur « Merge pull request »
- La branche est fusionnée dans
main
4. Synchroniser le main local
1# Basculer vers main
2git checkout main
3
4# Télécharger les changements depuis GitHub
5git pull
6
7# Supprimer la branche feature locale
8git branch -d feature/pirate-profileAnnuler des changements - Quand quelque chose tourne mal
Annuler les changements d'un fichier (non committé)
1# Restaurer le fichier au dernier commit
2git checkout -- app/page.tsx
3
4# Restaurer tous les fichiers
5git checkout -- .Retirer des fichiers du stage (git add)
1# Retirer du stage, garder les changements dans le fichier
2git reset app/page.tsx
3
4# Tout retirer du stage
5git resetAnnuler le dernier commit (localement)
1# Annuler le commit, garder les changements dans les fichiers
2git reset --soft HEAD~1
3
4# Annuler le commit, supprimer les changements dans les fichiers (DANGER !)
5git reset --hard HEAD~1Attention : --hard SUPPRIME les changements sans aucun moyen de les récupérer !
Revert d'un commit (déjà pushé)
Si le commit est déjà sur GitHub :
1# Créer un nouveau commit qui inverse les changements
2git revert a3f5b8c
3
4# Push
5git pushrevert crée un nouveau commit - plus sûr que reset.
Git dans Cursor
Cursor intègre le support de Git !
Panneau Source Control
- Clique sur l'icône Source Control (à gauche, 3 cercles reliés par des branches)
- Tu verras :
- Les fichiers modifiés
- Le bouton + (git add)
- Un champ pour le message de commit
- Le bouton Commit
Workflow dans Cursor :
- Modifie les fichiers
- Ouvre Source Control (Ctrl + Shift + G, aussi Control sur Mac)
- Clique sur + à côté des fichiers (stage)
- Tape le message de commit
- Clique sur Commit
- Clique sur « ... » → Push
AI Commit Messages : L'IA de Cursor peut suggérer des messages de commit à partir de tes changements !
Utiliser l'IA pour Git
Demande à l'IA de Cursor :
Prompt 1 :
1How to undo the last commit in Git?Prompt 2 :
1Write a good commit message for landing page changes - I added a hero section and cta buttonPrompt 3 :
1How to resolve a merge conflict in app/page.tsx?Bonnes pratiques Git
Commite souvent - petits commits fréquents > commits rares et volumineux
Bons messages de commit - explique QUOI et POURQUOI
Une branche par fonctionnalité - une fonctionnalité = une branche
Pull avant push - toujours git pull avant git push
Ne commite pas de secrets - .env dans .gitignore
Revue de code - utilise les Pull Requests
Main fonctionne toujours - ne fusionne pas de code cassé dans main
Ne commite pas node_modules/ - énorme, inutile Ne fais pas push --force sur main (sauf en cas d'absolue nécessité) Ne commite pas de WIP sans description - décris ce qui est en cours
Résumé
Git - système de contrôle de version, le journal de bord du code GitHub - plateforme pour stocker du code en ligne git init - initialisation du dépôt git add - ajouter des fichiers au stage git commit - enregistrer les changements (snapshot) git push - envoyer les commits vers GitHub git pull - télécharger les changements depuis GitHub git branch - créer des branches git merge - fusionner les changements entre branches Pull Request - demande de revue et de fusion .gitignore - fichiers ignorés par Git Cursor Source Control - interface graphique pour Git dans l'éditeur
Prochaines étapes : Dans les modules suivants, nous utiliserons Git pour :
- Sauvegarder l'avancement du projet
- Créer des branches de fonctionnalité
- Déployer sur Vercel (Vercel se connecte avec GitHub !)
À tout de suite !
Tu as repéré une erreur dans cette leçon ?
Teste tes connaissances
Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.
1. Que fait la commande 'git commit -m "..."' ?
2. Quelle est la différence entre Git et GitHub ?
Tâches pratiques dans le jeu
- Tri vertical
Ordonne les étapes pour sauvegarder les changements et les envoyer sur GitHub :
- Tri horizontal
Ordonne la commande qui sauvegarde les changements avec un message :