Maîtriser Git et GitHub en 2026 : Guide Pratique pour Développeurs

Meta Description: Apprenez Git et GitHub de zéro en 2026. Commandes essentielles, workflows professionnels, bonnes pratiques et astuces pour collaborer efficacement sur vos projets. Mots-clés: apprendre git 2026, tutoriel github débutant, commandes git essentielles, git workflow, collaboration github, git branching

Git est l'outil que tout développeur utilise quotidiennement — et pourtant, la majorité n'en maîtrise que 10%. Ce guide va au-delà du git add . && git commit -m "fix" pour vous rendre réellement productif avec Git et GitHub en 2026.

Pourquoi Git est non-négociable

Aucune offre d'emploi développeur en 2026 n'omet Git. C'est l'outil de versioning universel :

Si vous ne maîtrisez pas Git, vous êtes invisible sur le marché.

Installation et configuration initiale

Installation

# Ubuntu/Debian

sudo apt install git

macOS

brew install git

Windows

Télécharger Git for Windows sur git-scm.com

Vérifier

git --version

Configuration obligatoire

# Identité (utilisée dans chaque commit)

git config --global user.name "Votre Nom"

git config --global user.email "votre@email.com"

Éditeur par défaut

git config --global core.editor "code --wait" # VS Code

Branche par défaut

git config --global init.defaultBranch main

Activer les couleurs

git config --global color.ui auto

Clé SSH pour GitHub

# Générer une clé SSH

ssh-keygen -t ed25519 -C "votre@email.com"

Copier la clé publique

cat ~/.ssh/id_ed25519.pub

L'ajouter sur GitHub → Settings → SSH and GPG keys → New SSH key

Les commandes essentielles

Créer et cloner

# Initialiser un nouveau repo

git init mon-projet

cd mon-projet

Cloner un repo existant

git clone git@github.com:user/repo.git

Cloner une branche spécifique

git clone -b develop git@github.com:user/repo.git

Le cycle de base : add → commit → push

# Voir l'état actuel

git status

Ajouter des fichiers au staging

git add fichier.js # Un fichier

git add src/ # Un dossier

git add -A # Tout

Committer

git commit -m "feat: ajouter l'authentification JWT"

Pousser sur le remote

git push origin main

Voir l'historique

# Log classique

git log

Log compact (une ligne par commit)

git log --oneline

Log avec graphe des branches

git log --oneline --graph --all

Log d'un fichier spécifique

git log -- src/auth.js

Qui a modifié chaque ligne ?

git blame src/auth.js

Annuler des changements

# Annuler les modifications d'un fichier (non commité)

git checkout -- fichier.js

ou (Git 2.23+)

git restore fichier.js

Retirer du staging (sans perdre les modifications)

git restore --staged fichier.js

Annuler le dernier commit (garder les modifications)

git reset --soft HEAD~1

Annuler le dernier commit (perdre les modifications)

git reset --hard HEAD~1

Créer un commit qui annule un commit précédent

git revert abc1234

Branching : la puissance de Git

Comprendre les branches

Une branche est simplement un pointeur vers un commit. Créer une branche coûte zéro — c'est instantané.

# Créer une branche

git branch feature/login

Basculer dessus

git checkout feature/login

ou (Git 2.23+)

git switch feature/login

Créer ET basculer en une commande

git checkout -b feature/login

ou

git switch -c feature/login

Lister les branches

git branch # locales

git branch -r # remotes

git branch -a # toutes

Fusionner des branches

# Se placer sur la branche cible

git switch main

Fusionner la feature branch

git merge feature/login

Supprimer la branche fusionnée

git branch -d feature/login

Résoudre les conflits

Quand deux branches modifient le même fichier au même endroit :

<<<<<<< HEAD

const port = 3000;

=======

const port = 8080;

>>>>>>> feature/login

  • Ouvrir le fichier conflictuel
  • Choisir la version à garder (ou combiner)
  • Supprimer les marqueurs <<<<<<<, =======, >>>>>>>
  • git add le fichier résolu
  • git commit pour finaliser le merge
  • Workflows professionnels

    Git Flow (classique)

    main ──────────────────────────────────── (production)
    

    └── develop ─────────────────────────── (intégration)

    ├── feature/login ──────┘

    ├── feature/dashboard ──┘

    └── release/1.0 ───────────┘

    GitHub Flow (moderne, simplifié)

    main ──────────────────────────────────── (toujours déployable)
    

    ├── feature/login ──── PR ──── merge ──┘

    └── fix/bug-auth ───── PR ──── merge ──┘

  • Créer une branche depuis main
  • Développer la feature
  • Ouvrir une Pull Request
  • Code review par l'équipe
  • Merge dans main
  • Déployer
  • > Recommandation : Pour les petites équipes et projets solo, GitHub Flow est parfait. Git Flow est utile pour les gros projets avec des releases planifiées.

    Trunk-Based Development (avancé)

    main ──────────────────────────────────── (déploiement continu)
    

    ├── short-lived-branch (1-2 jours max) ┘

    └── short-lived-branch (1-2 jours max) ┘

    GitHub : au-delà du code

    Pull Requests efficaces

    Une bonne PR :

    Issues et Project Boards

    ## Bug Report
    
    Description: L'authentification échoue sur Safari 17
    Steps to reproduce:
    
  • Ouvrir l'app sur Safari 17
  • Cliquer "Se connecter"
  • Observer l'erreur 500
  • Expected: Connexion réussie Actual: Erreur 500 + page blanche Environment: Safari 17.2, macOS Sonoma

    GitHub Actions (CI/CD)

    # .github/workflows/ci.yml
    

    name: CI

    on: [push, pull_request]

    jobs:

    test:

    runs-on: ubuntu-latest

    steps:

    - uses: actions/checkout@v4

    - uses: actions/setup-node@v4

    with:

    node-version: 22

    - run: npm ci

    - run: npm test

    - run: npm run lint

    Commandes avancées utiles

    Stash : mettre de côté temporairement

    # Sauvegarder les modifications en cours
    

    git stash

    Récupérer les modifications

    git stash pop

    Lister les stashes

    git stash list

    Stash avec un message

    git stash save "WIP: refactoring auth"

    Rebase : réécrire l'historique

    # Rebaser sa branche sur main (au lieu de merge)
    

    git switch feature/login

    git rebase main

    Rebase interactif (squash, reword, etc.)

    git rebase -i HEAD~3

    > Règle d'or : Ne jamais rebase une branche partagée (déjà pushée et utilisée par d'autres).

    Cherry-pick : prendre un commit spécifique

    # Appliquer un commit d'une autre branche
    

    git cherry-pick abc1234

    Bisect : trouver le commit fautif

    # Trouver quel commit a introduit un bug
    

    git bisect start

    git bisect bad # Le commit actuel a le bug

    git bisect good abc1234 # Ce commit était OK

    Git vous guide commit par commit

    Tester à chaque étape → git bisect good/bad

    git bisect reset # Quand trouvé

    Le fichier .gitignore

    Indispensable pour ne pas committer ce qu'il ne faut pas :

    # Dépendances
    

    node_modules/

    vendor/

    __pycache__/

    Environnement

    .env

    .env.local

    *.env

    Build

    dist/

    build/

    *.min.js

    IDE

    .vscode/

    .idea/

    *.swp

    OS

    .DS_Store

    Thumbs.db

    Logs

    *.log

    npm-debug.log*

    Bonnes pratiques

    Messages de commit conventionnels

    feat: ajouter l'authentification JWT
    

    fix: corriger le crash sur la page profil

    docs: mettre à jour le README

    style: reformater le code (prettier)

    refactor: extraire la logique d'auth en service

    test: ajouter les tests unitaires pour UserService

    chore: mettre à jour les dépendances

    perf: optimiser la requête SQL de recherche

    Règles d'équipe

  • Jamais de push direct sur main — toujours via PR
  • Branches descriptivesfeature/login, pas branch1
  • Commits atomiques — un commit = un changement logique
  • Review obligatoire — au moins 1 approbation avant merge
  • Tests verts — pas de merge si le CI échoue
  • Erreurs fréquentes et solutions

    "J'ai commité sur la mauvaise branche"

    # Créer une branche avec le commit
    

    git branch feature/oops

    Revenir en arrière sur main

    git reset --hard HEAD~1

    Basculer sur la bonne branche

    git switch feature/oops

    "J'ai pushé un fichier sensible (.env)"

    # Supprimer le fichier de l'historique
    

    git filter-branch --force --tree-filter \

    'rm -f .env' HEAD

    Ou utiliser BFG Repo-Cleaner (plus rapide)

    bfg --delete-files .env

    Force push (seule exception où c'est OK)

    git push --force

    Changer immédiatement les secrets exposés !

    "Mon rebase a tout cassé"

    # Annuler le rebase en cours
    

    git rebase --abort

    Si déjà terminé, revenir à l'état d'avant

    git reflog # Trouver le bon point

    git reset --hard HEAD@{5}

    FAQ

    Git vs GitHub, quelle différence ?

    Git est l'outil de versioning (local, en ligne de commande). GitHub est une plateforme cloud qui héberge des repos Git et ajoute collaboration (PR, Issues, Actions). Alternatives à GitHub : GitLab, Bitbucket, Gitea.

    Merge ou rebase ?

    Merge préserve l'historique complet (plus lisible pour les audits). Rebase crée un historique linéaire (plus propre). En équipe, merge est plus sûr. En solo, rebase donne un historique plus clean.

    Comment contribuer à l'open source ?

  • Fork le projet
  • Clone votre fork
  • Créez une branche
  • Faites vos modifications
  • Ouvrez une PR vers le repo original
  • Répondez aux commentaires du maintainer
  • Faut-il utiliser une interface graphique ?

    Commencez par le terminal pour comprendre ce que vous faites. Ensuite, GitKraken, Sourcetree, ou l'intégration VS Code sont d'excellents compléments — mais ne remplacent pas la compréhension des commandes.


    Conclusion

    Git et GitHub ne sont pas optionnels en 2026 — c'est le socle de tout développeur professionnel. Maîtriser ces outils vous rend plus productif, plus employable, et vous ouvre les portes de la collaboration open-source mondiale.

    Pour aller plus loin : Si vous débutez en développement, les bases réseau et système sont tout aussi fondamentales. NetRevision propose une formation complète gratuite pour maîtriser les réseaux et le DevOps — le complément parfait à Git pour un profil tech complet.
    Publié sur templates.quernel-cloud.com — Templates et formations pour développeurs et ingénieurs réseau.