Fonctionnalités avancées
Au-delà des bases : stash, tags, cherry-pick, sous-modules, GitHub Actions et fichiers spéciaux.
9. Fonctionnalités Git avancées
Annuler des changements
# Annuler des modifications non indexées (working dir)
git restore fichier.txt
# Retirer un fichier de l'index (sans perdre les modifications)
git restore --staged fichier.txt
# Annuler le dernier commit en gardant les modifications
git reset --soft HEAD~1
# Annuler le dernier commit ET les modifications (destructif)
git reset --hard HEAD~1
# Créer un nouveau commit qui annule un commit précédent (sûr, préserve l'historique)
git revert <hash-du-commit>
Attention
git reset --hard est destructif : les modifications non commitées sont perdues définitivement. Privilégie git revert quand tu veux préserver l'historique.
Stash (mettre de côté des changements temporaires)
git stash # met de côté les modifications en cours
git stash list # liste les stash
git stash pop # réapplique et supprime le dernier stash
git stash apply # réapplique sans supprimer
git stash drop # supprime un stash
Cas d'usage
Tu travailles sur une feature mais tu doisrapidement corriger un bug sur main ? Utilise git stash pour mettre de côté ton travail en cours, change de branche, corrige, puis git stash pop pour reprendre là où tu en étais.
Tags (marquer des versions)
git tag v1.0.0 # tag léger
git tag -a v1.0.0 -m "Version 1.0.0" # tag annoté (recommandé)
git push origin v1.0.0 # pousser un tag
git push origin --tags # pousser tous les tags
Cherry-pick (récupérer un commit précis)
Utile pour
Rapatrier un correctif d'une branche à une autre sans fusionner toute la branche.
Historique et recherche
git log --author="Nom"
git log --since="2024-01-01" --until="2024-12-31"
git log -p fichier.txt # historique détaillé d'un fichier
git blame fichier.txt # qui a modifié quelle ligne
git bisect start # recherche binaire d'un commit fautif
Sous-modules (submodules)
git submodule add git@github.com:utilisateur/lib.git chemin/lib
git submodule update --init --recursive
GitHub Actions (CI/CD)
Automatisation
Fichier .github/workflows/ci.yml à la racine du dépôt pour automatiser tests, build, déploiement à chaque push/PR.
10. Fichiers spéciaux
.gitignore
Liste les fichiers/dossiers à ne jamais suivre par Git (dépendances, fichiers de build, secrets…).
README.md
Page d'accueil du dépôt, doit contenir :
- Description du projet
- Installation
- Utilisation
- Contribution
- Licence
LICENSE
Définit les droits d'utilisation du code (MIT, Apache 2.0, GPL, etc.).
CONTRIBUTING.md
Explique comment contribuer au projet (style de code, process de PR, tests requis).
Lien vers source : Git Documentation · GitHub Actions