- Qu'est-ce que Git ?
- Histoire de Git et son importance
- Git vs autres systèmes de contrôle de version
- Installation de Git (Windows, macOS, Linux)
- Configuration initiale (git config)
- Premier projet Git : création d'un dépôt local
- Les 3 états de Git : Working Directory, Staging Area, Repository
- Les fichiers .git et l'architecture interne
- Suivi des fichiers : git status, git add, git commit
- Exploration de l'historique : git log, git show, git diff
- Visualiser l'historique : git log --graph et la notion de graphe
- .gitignore : ignorer des fichiers
- Modifier le dernier commit (git commit --amend)
- Annuler des modifications (git restore, git checkout)
- Comprendre git reset (--soft, --mixed, --hard)
- Annuler un commit publié (git revert)
- Récupérer des fichiers d'anciennes versions
- Qu'est-ce qu'une branche ?
- Créer, lister, supprimer des branches
- Changer de branche (git checkout et git switch)
- Fusion de branches (git merge)
- Stratégies de merge (fast-forward, merge commit, squash)
- Résolution de conflits
- Rebasage : le principe de git rebase
- Rebase vs Merge : la règle d'or et quand choisir
- Qu'est-ce qu'un dépôt distant ?
- Introduction à GitHub, GitLab et Bitbucket
- Cloner un dépôt (git clone)
- Publier un projet local : git remote add et git push -u
- Gérer les dépôts distants (git remote)
- Synchroniser : git fetch, git pull, git push
- Authentification : Clés SSH et Personal Access Tokens (PAT)
- Fork et Pull Request (PR)
- Mettre de côté temporairement (git stash)
- Cherry-pick : appliquer des commits spécifiques
- Nettoyer l'historique avant de partager (rebase interactif)
- Reflog : récupérer des commits perdus
- Déboguer avec git bisect
- Tracer les modifications (git blame et git log -S)
- Tags et releases
- Submodules et sous-projets
- Hooks Git (automatisation)
- Alias Git pour la productivité
- Écrire de bons messages de commit
- Commits atomiques et organisation du travail
- .gitignore et .gitattributes avancés
- Workflows collaboratifs (Git Flow, GitHub Flow, Trunk-Based)
- Organisation des branches (main, dev, feature/, hotfix/)
- Revue de code avec Pull Requests
- Versionnement sémantique (SemVer)
- Résoudre "detached HEAD"
- Annuler un merge ou un rebase
- Récupérer du travail perdu (avec reflog et reset)
- Gérer les gros fichiers et nettoyer le dépôt
- Erreurs fréquentes et solutions
- Interfaces graphiques (Sourcetree, GitKraken, Fork)
- Git dans les IDE (VSCode, IntelliJ, PyCharm)
- Extensions Git utiles
- Intégration continue (CI/CD) et Git
- Déploiement automatisé avec Git
- Git LFS pour les gros fichiers
- Scénarios courants et résolutions
- Atelier : Contribuer à un projet open source
- Atelier : Projet en équipe avec Git Flow
- Projet personnel guidé
- Exercices de simulation (conflits, historique complexe)
- Quiz et certification finale