Configuration
Configuration globale git config
Essentiel

Configure l'identité et les préférences globales de Git. Ces paramètres sont stockés dans ~/.gitconfig et s'appliquent à tous vos dépôts.

BASH
git config --global user.name "Votre Nom"
git config --global user.email "vous@exemple.fr"
git config --global core.editor "code --wait"
git config --global init.defaultBranch main
git config --list
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --decorate --all"
Niveaux de configuration
NiveauFichierDescription
--system/etc/gitconfigPour tous les utilisateurs du système
--global~/.gitconfigPour l'utilisateur courant (le plus courant)
--local.git/configPour le dépôt courant uniquement (prioritaire)
Initialisation
Créer un dépôt git init
Démarrage

Initialise un nouveau dépôt Git. Crée un dossier .git caché contenant toute l'histoire du projet.

BASH
git init                          # Initialise un dépôt dans le dossier courant
git init mon-projet               # Crée un dossier et initialise
git init --bare projet.git        # Dépôt nu (serveur)
Status & Log
État du dépôt git status
Lecture

Affiche l'état du répertoire de travail et de la zone de staging. Indique les fichiers modifiés, ajoutés ou non suivis.

BASH
git status                        # État du répertoire de travail
git status -s                     # Format court
Historique des commits git log
Lecture

Consulte l'historique des commits avec de nombreuses options de filtrage et d'affichage.

BASH
git log                           # Historique complet
git log --oneline                 # Une ligne par commit
git log --oneline --graph --all   # Arbre des branches
git log -n 5                      # 5 derniers commits
git log --author="Alice"          # Commits d'un auteur
git log --since="2024-01-01"      # Depuis une date
git log -- fichier.js             # Commits touchant un fichier
git show abc1234                  # Détails d'un commit
Comparer les changements git diff
Lecture

Affiche les différences entre l'espace de travail, la zone de staging et les commits.

BASH
git diff                          # Changements non stagés
git diff --staged                 # Changements stagés
git diff main..feature            # Diff entre branches
git blame fichier.js              # Qui a modifié chaque ligne
Staging & Commit
Stager des fichiers git add
Écriture

Ajoute des modifications à la zone de staging (index) en préparation du prochain commit.

BASH
git add fichier.js                # Stager un fichier
git add .                         # Stager tous les changements
git add -p                        # Stager interactivement (par morceaux)
git add *.html                    # Pattern glob
git restore --staged fichier.js   # Unstager (annuler git add)
git restore fichier.js            # Annuler modifications (dangereux)
Créer un commit git commit
Écriture

Enregistre les changements stagés dans l'historique du dépôt avec un message descriptif.

BASH
git commit -m "feat: ajouter authentification"
git commit -am "fix: corriger bug login"  # add + commit en une fois
git commit --amend -m "nouveau message"  # modifier le dernier commit
git commit --amend --no-edit             # ajouter à dernier commit sans changer message
Convention Conventional Commits
Bonnes pratiques

Standard pour des messages de commit lisibles et utiles pour générer des changelogs automatiques.

PréfixeDescription
feat:Nouvelle fonctionnalité
fix:Correction de bug
docs:Documentation uniquement
style:Formatage (pas de changement logique)
refactor:Refactorisation du code
test:Ajout ou modification de tests
chore:Tâches de maintenance (deps, build…)
Branches
Gérer les branches git branch
Écriture

Les branches permettent de travailler sur des fonctionnalités en isolation sans affecter le code principal.

BASH
git branch                        # Lister les branches locales
git branch -a                     # Toutes les branches (locales + distantes)
git branch ma-feature             # Créer une branche
git checkout ma-feature           # Basculer sur une branche
git checkout -b ma-feature        # Créer ET basculer
git switch ma-feature             # Basculer (commande moderne)
git switch -c ma-feature          # Créer et basculer (moderne)
git branch -d ma-feature          # Supprimer (si fusionnée)
git branch -D ma-feature          # Supprimer de force
git branch -m ancien nouveau      # Renommer
git branch -m main                # Renommer la branche courante en main
Merge & Rebase
Fusionner des branches git merge
Fusion

Intègre les changements d'une branche dans une autre en créant un commit de fusion (merge commit).

BASH
# Merge : crée un commit de fusion
git checkout main
git merge ma-feature              # Fusion avec commit de merge
git merge --no-ff ma-feature      # Forcer un commit de merge
git merge --squash ma-feature     # Squash tous les commits en un seul
Rejouer des commits git rebase
Fusion

Déplace ou rejoue des commits sur une nouvelle base, produisant un historique linéaire plus propre.

BASH
# Rebase : rejoue les commits sur une autre base
git checkout ma-feature
git rebase main                   # Rejoue ma-feature sur main
git rebase -i HEAD~3              # Rebase interactif (3 derniers commits)
# Dans le rebase interactif : pick, squash(s), fixup(f), reword(r), drop(d)
Résoudre les conflits
Conflits

Lorsque deux branches modifient les mêmes lignes, Git crée un conflit à résoudre manuellement.

BASH
git status                        # Voir les fichiers en conflit
# Éditer les fichiers conflictuels, puis :
git add fichier-resolu.js
git merge --continue
# OU
git merge --abort                 # Annuler la fusion
git rebase --abort
Remote
Gérer les remotes git remote
Collaboration

Les remotes sont des références vers des dépôts hébergés (GitHub, GitLab…). origin est le nom conventionnel du remote principal.

BASH
git remote -v                     # Lister les remotes
git remote add origin https://github.com/user/repo.git
git remote remove origin
git remote rename origin upstream
git remote set-url origin https://nouveau-url.git
Pousser vers le remote git push
Écriture

Envoie les commits locaux vers le dépôt distant. L'option -u définit la branche de suivi amont.

BASH
git push origin main              # Pousser vers remote
git push -u origin ma-feature     # Pousser et définir upstream
git push --all                    # Pousser toutes les branches
git push origin :ma-feature       # Supprimer branche distante
git push origin --delete ma-feature
git push --tags                   # Pousser les tags
git push --force-with-lease       # Push force sécurisé (préférer à --force)
Clone & Pull
Cloner un dépôt git clone
Collaboration

Copie un dépôt distant en local avec tout son historique et configure automatiquement le remote origin.

BASH
git clone https://github.com/user/repo.git
git clone https://github.com/user/repo.git mon-dossier
git clone --depth=1 url           # Clone superficiel (sans historique complet)
git clone --branch develop url    # Cloner une branche spécifique
Récupérer les changements git fetch / git pull
Collaboration

git fetch récupère sans fusionner (sûr). git pull combine fetch et merge en une seule commande.

BASH
git fetch origin                  # Récupère sans fusionner
git fetch --all                   # Récupère toutes les branches
git pull origin main              # fetch + merge
git pull --rebase origin main     # fetch + rebase (historique plus propre)
Stash
Mise de côté temporaire git stash
Utilitaire

Sauvegarde temporairement les modifications en cours sans créer de commit, pour pouvoir changer de branche proprement.

BASH
git stash                         # Mise de côté des modifications
git stash push -m "message"       # Avec message descriptif
git stash -u                      # Inclure les fichiers non suivis (untracked)
git stash -a                      # Inclure aussi les fichiers ignorés (.gitignore)
git stash -p                      # Mode interactif : choisir les hunks à mettre de côté
git stash list                    # Lister les stashs
git stash show                    # Afficher le résumé du dernier stash
git stash show -p                 # Afficher le diff complet du dernier stash
git stash show stash@{1}          # Afficher le résumé d'un stash spécifique
git stash pop                     # Appliquer le dernier stash et le supprimer
git stash apply stash@{2}         # Appliquer un stash spécifique
git stash drop stash@{0}          # Supprimer un stash
git stash clear                   # Supprimer tous les stashs
git stash branch ma-branche       # Créer une branche depuis un stash
Annuler & Reset
Annuler des commits git reset
Danger

Réécrit l'historique en déplaçant le pointeur HEAD. --hard est destructif et supprime définitivement les modifications.

BASH
# Annuler des commits (garder les modifications)
git reset HEAD~1                  # Annuler 1 commit, garder les modifs stagées
git reset --soft HEAD~1           # Garder les modifs stagées
git reset --mixed HEAD~1          # Garder les modifs non stagées (défaut)
git reset --hard HEAD~1           # TOUT supprimer (dangereux, perte de données)
Annuler en sécurité git revert
Sûr

git revert crée un nouveau commit qui annule les changements, sans réécrire l'historique. Sûr pour les branches partagées.

BASH
# Revert : crée un commit inverse (sûr pour l'historique partagé)
git revert abc1234                # Annule un commit en créant un nouveau
git revert HEAD                   # Annule le dernier commit
Appliquer un commit précis git cherry-pick
Utilitaire

Applique les changements d'un ou plusieurs commits spécifiques sur la branche courante, sans fusionner toute la branche.

BASH
# Cherry-pick : appliquer un commit spécifique
git cherry-pick abc1234           # Applique ce commit sur la branche courante
git cherry-pick abc1234..def5678  # Plage de commits
Tags
Gestion des tags git tag
Versioning

Les tags marquent des points importants dans l'historique (ex. releases). Les tags annotés sont recommandés car ils contiennent des métadonnées.

BASH
git tag                           # Lister les tags
git tag v1.0.0                    # Tag léger
git tag -a v1.0.0 -m "Version 1.0.0"  # Tag annoté (recommandé)
git tag -a v1.0.0 abc1234 -m "..."    # Tag sur un commit spécifique
git show v1.0.0                   # Afficher les infos du tag
git push origin v1.0.0            # Pousser un tag
git push origin --tags            # Pousser tous les tags
git tag -d v1.0.0                 # Supprimer localement
git push origin --delete v1.0.0  # Supprimer sur le remote
git checkout v1.0.0               # Se placer sur un tag (detached HEAD)
.gitignore
Fichier .gitignore
Essentiel

Liste les fichiers et dossiers que Git doit ignorer. Placé à la racine du projet. Les patterns sont évalués depuis la racine du dépôt.

GITIGNORE
# Dépendances
node_modules/
vendor/

# Build
dist/
build/
.next/

# Environnement
.env
.env.local
.env.*.local

# Éditeur
.vscode/
.idea/
*.swp
*~

# OS
.DS_Store
Thumbs.db

# Logs
*.log
npm-debug.log*

# Cache
.cache/
.parcel-cache/
Retirer un fichier déjà suivi
Utilitaire

Si un fichier est déjà suivi par Git et que vous voulez l'ignorer, il faut d'abord le retirer du cache sans le supprimer du disque.

BASH
git rm --cached fichier.js        # Retirer un fichier déjà suivi
git rm --cached -r node_modules/  # Retirer un dossier entier
# Ensuite ajouter le fichier/dossier dans .gitignore et commiter
Workflow GitHub Flow
GitHub Flow — Workflow complet
CollaborationBonnes pratiques

GitHub Flow est un workflow simple et efficace basé sur des branches de fonctionnalités courtes et des déploiements fréquents.

BASH
# === ÉTAPE 1 : Se placer sur main et être à jour ===
git checkout main
git pull origin main

# === ÉTAPE 2 : Créer une branche pour la fonctionnalité ===
git switch -c feature/ajout-authentification

# === ÉTAPE 3 : Travailler et commiter régulièrement ===
git add .
git commit -m "feat: ajouter formulaire de connexion"

git add src/auth/
git commit -m "feat: implémenter vérification JWT"

git add tests/
git commit -m "test: ajouter tests d'authentification"

# === ÉTAPE 4 : Pousser la branche vers le remote ===
git push -u origin feature/ajout-authentification

# === ÉTAPE 5 : Ouvrir une Pull Request sur GitHub ===
# → Aller sur GitHub et créer la PR depuis l'interface
# → Assigner des reviewers, lier des issues

# === ÉTAPE 6 : Intégrer les retours de la review ===
git add src/auth/middleware.js
git commit -m "fix: corriger validation token expiré"
git push

# === ÉTAPE 7 : Mise à jour depuis main (si nécessaire) ===
git fetch origin
git rebase origin/main           # Historique propre et linéaire
git push --force-with-lease      # Push forcé sécurisé après rebase

# === ÉTAPE 8 : Merge après approbation (sur GitHub ou en CLI) ===
git checkout main
git merge --no-ff feature/ajout-authentification
git push origin main

# === ÉTAPE 9 : Nettoyer la branche ===
git branch -d feature/ajout-authentification
git push origin --delete feature/ajout-authentification
Résumé des bonnes pratiques
PratiqueDescription
main toujours stableNe jamais pousser directement sur main sans review
Branches courtesFusionner souvent pour éviter les conflits importants
Commits atomiquesUn commit = une seule modification logique
Messages clairsUtiliser Conventional Commits pour l'automatisation
Pull RequestsToujours faire relire le code avant de fusionner
--force-with-leasePréférer à --force pour éviter d'écraser le travail des autres

Aucun résultat pour votre recherche.