Ouvrir le Lab
Git Basics · Programme

Parcours Git Basics

Vue d’ensemble

Une journée pour comprendre l’état réel d’un dépôt et travailler sans gestes magiques.

Jour 1 Git — du fichier local à l’historique partagé 8 heures · 4 h explication/démo + 4 h pratique guidée
Durée
8 heures · 4 h explication/démo + 4 h pratique guidée
Niveau
Débutant
Prérequis
Un ordinateur Windows ou macOS et un compte GitHub

01Installer les outils et se connecter

Installez une chaîne minimale, vérifiez-la dans le terminal et configurez l’identité portée par vos commits.

Les installateurs évoluent plus vite que ce support. Utilisez les pages officielles ci-dessous. Si votre machine réagit autrement, recherchez le message exact ou demandez une piste à votre assistant IA préféré ; lisez et vérifiez toute commande inconnue avant de l’exécuter.

git --version
git config --global user.name "Your Name"
git config --global user.email "your-private-or-noreply-address"
git config --global --get user.name
git config --global --get user.email

GitHub Desktop fournit une interface graphique et une authentification GitHub. Git en ligne de commande reste un outil distinct. Pour un exercice public, utilisez une adresse GitHub « noreply » plutôt qu’une adresse personnelle.

Les interfaces graphiques sont utiles. Comprendre les transitions visibles dans le terminal rend simplement GitHub Desktop, VS Code et les autres interfaces plus faciles à interpréter.

Challenge

Effectuez la vérification complète sans publier d’adresse personnelle dans un dépôt.

Ouvrir le Lab de cette section

02Comprendre un dépôt

Enregistrer un fichier, préparer un commit, créer un commit et partager ce commit sont quatre opérations différentes.

Arbre de travailFichiers visibles et modifiables
Zone d’indexContenu proposé pour le prochain commit
Dépôt localHistorique stocké par Git sur la machine
Dépôt distantCopie partagée, ici sur GitHub

Git est local et distribué : un commit est créé sur votre machine avant d’être poussé vers GitHub. Un dépôt peut contenir du code, de la documentation, des configurations, des scripts, des sites ou certains assets — mais Git n’est pas idéal pour tous les fichiers.

Périmètre de cette journée

Git peut rester entièrement local, être auto-hébergé ou utiliser un autre service que GitHub. Cette initiation suppose des programmeurs travaillant avec GitHub et laisse ces variantes pour la suite.

Projets Unreal Engine

Les grands projets Unreal et leurs assets binaires nécessitent souvent un workflow avec verrouillage exclusif. Le parcours Unreal de Dercetech traite Perforce, son serveur et son intégration pratique séparément.

Challenge

Classez une série d’actions : modifier, git add, git commit et git push.

Ouvrir le Lab de cette section

03Inspecter, indexer, committer et pousser

Le cycle quotidien commence par une inspection : vous choisissez le contenu du prochain commit au lieu de tout envoyer par réflexe.

git init                         # or: git clone <url>
git status
git diff
git add src/app.js README.md
git diff --staged
git restore --staged README.md
git commit -m "Fix empty task rendering"
git log --oneline
git push

git init transforme un dossier existant en dépôt local. git clone crée une nouvelle copie locale d’un dépôt existant et configure généralement son distant origin.

git status
Résume les fichiers modifiés, indexés et non suivis.
git diff
Montre les changements non indexés ; --staged montre le contenu proposé pour le commit.
git add <path>
Place le contenu choisi dans la zone d’index.
git commit
Crée un point d’historique local précis et cohérent.
git push
Transfère des commits locaux vers le dépôt distant.

Un bon message de débutant est concis, spécifique et décrit une seule intention logique. Sauvegarder n’est pas committer ; committer n’est pas pousser.

Challenge

Indexez uniquement les bons fichiers, inspectez le diff indexé, commitez avec un message précis puis poussez.

Ouvrir le Lab de cette section

04Fetch, pull et stash sans perdre son travail

Distinguez les informations du serveur, leur intégration dans votre branche et votre travail local inachevé.

git fetch
git status
git log --oneline --graph --decorate --all
git stash push -m "WIP: validation message"
git pull
git stash list
git stash pop

git fetch met à jour les références de suivi distant sans intégrer directement les changements dans la branche courante. git pull effectue un fetch puis une intégration, généralement une fusion sauf configuration ou option différente.

Le stash conserve temporairement des modifications locales. Ce n’est ni une sauvegarde, ni une fonction distante, ni un remplacement des commits. git stash apply garde l’entrée ; git stash pop tente de l’appliquer et la retire en cas de succès. Les fichiers non suivis exigent une option explicite.

  1. Inspectez l’état courant.
  2. Décidez si le travail mérite un commit ou un stash.
  3. Fetch ou pull selon le besoin, puis inspectez à nouveau.
  4. Réappliquez le travail temporaire et vérifiez le résultat.
Challenge

Mettez le travail inachevé de côté, synchronisez la branche, restaurez-le et inspectez le résultat.

Ouvrir le Lab de cette section

05Les branches et leur emplacement

Une branche est un nom mobile qui pointe vers un commit. Ce n’est ni un dossier, ni une copie complète, ni automatiquement un objet publié.

git branch
git switch -c feature/login-message
# edit, stage, commit
git push -u origin feature/login-message
git switch main
git merge feature/login-message
feature/login-messageBranche locale
origin/feature/login-messageDernière connaissance locale de la branche distante
originDépôt distant réel

Créer une branche locale ne la publie pas. Le premier push avec -u crée la branche distante et configure une relation de suivi pratique. origin/main n’est pas une vue réseau en direct : il reflète le dernier fetch connu.

Pourquoi voit-on encore git checkout dans des exemples ?

checkout est une commande plus ancienne qui couvre plusieurs usages. Cette journée emploie git switch pour rendre le changement et la création de branches plus explicites.

Challenge

Créez une branche, commitez une modification dessus et publiez-la avec son upstream.

Ouvrir le Lab de cette section

06Résoudre un conflit de fusion

Un conflit signifie que Git ne peut pas choisir seul le contenu final. Il ne prouve pas qu’une personne s’est trompée.

<<<<<<< HEAD
const releaseChannel = "stable";
=======
const releaseChannel = "preview";
>>>>>>> feature/release-channel
  1. Reproduisez le conflit et lisez git status.
  2. Ouvrez le fichier dans l’éditeur de fusion de VS Code.
  3. Comparez base, version courante, version entrante et résultat.
  4. Écrivez volontairement le résultat final : un côté, l’autre, les deux ou une nouvelle combinaison.
  5. Sauvegardez, indexez le fichier résolu, terminez le commit puis vérifiez l’application.

Si vous n’êtes pas prêt à poursuivre une fusion inachevée, git merge --abort restaure le point de départ quand Git peut le faire proprement. « Accepter les deux » n’est jamais une règle universelle.

Challenge

Résolvez un conflit de texte réaliste dans VS Code et justifiez le résultat choisi.

Ouvrir le Lab de cette section

07.gitignore et hygiène du dépôt

Le dépôt doit décrire le projet, pas accumuler les dépendances restaurables, les caches, les sorties de build ou les secrets locaux.

# Dependencies and reproducible output
node_modules/
dist/
build/
.cache/

# Local configuration and secrets
.env

# Keep the documented shape
!.env.example

.gitignore définit des chemins qui doivent rester non suivis. Il n’arrête pas rétroactivement le suivi d’un fichier déjà commité. Un secret commité doit être considéré comme exposé : retirez-le, faites-le tourner, puis traitez le nettoyage d’historique comme une réponse à incident distincte.

git status
git check-ignore -v .env
Faut-il ignorer tous les fichiers générés ?

Par défaut, ignorez les sorties reproductibles de la machine. Certains projets versionnent volontairement un résultat généré ; cette décision doit être explicite, documentée et vérifiée.

Challenge

Construisez un .gitignore sûr pour une petite application tout en conservant .env.example.

Ouvrir le Lab de cette section

08Workflow complet et suite du parcours

Terminez un changement depuis un espace de travail sale jusqu’à une branche de fonctionnalité intégrée et synchronisée.

git status
git diff
git switch -c feature/clear-empty-state
git add src/empty-state.js tests/empty-state.test.js
git diff --staged
git commit -m "Clarify the empty task state"
git fetch
git push -u origin feature/clear-empty-state
# review, merge, verify, synchronise

Critère de fin

Vous pouvez expliquer l’état avant d’agir, sélectionner un commit cohérent, synchroniser, travailler sur une branche, protéger un travail inachevé, résoudre un conflit simple et garder le dépôt propre.

Et maintenant ?

La suite couvre les pull requests et la revue, les tags de version, CI/CD, rebase et nettoyage d’historique, protections de dépôt, branches de release, Git Flow et gestion des versions. Git Flow est une option structurée — production, développement, fonctionnalités, releases et correctifs urgents — pas une règle universelle. Dans une grande organisation, un release manager peut imposer le cycle plutôt que laisser chacun improviser.

Faut-il supprimer le dépôt lorsqu’une commande surprend ?

Non. Commencez par git status, git diff et git log, identifiez l’opération en cours et protégez le travail non commité. git restore --staged et git merge --abort répondent déjà à deux erreurs ordinaires ; une suppression aveugle détruit précisément les preuves utiles au diagnostic.

Challenge final

Amenez le laboratoire persistant de son état initial sale à une branche de fonctionnalité intégrée, vérifiée et synchronisée.

Ouvrir le Lab de cette section