Git Total 2 jours

Programme

Préparer son environnement de travail

  • Configurations globale et locale

  • Aliases et raccourcis incontournables

  • Activer les complétions automatiques

  • Informations d’état automatiques dans le prompt

Concepts de la gestion de dépôt Git

  • Les « zones » : working directory/tree, index/stage, dépôt

  • Les « états » : non versionné, modifié, staged, non modifié

  • Aperçu du dossier .git

Premier dépôt

  • Initialisation

  • Import initial

  • Exclusions globale et locale (.gitignore, .git/info/exclude…)

  • Savoir ce qu’on a dans chaque zone / état en utilisant efficacement git diff

  • La notion critique de HEAD

  • Syntaxes de révision : du basique à l’avancé, mais toujours utile

  • Optimiser la consultation de l’historique : merveilles cachées de git log.

Commits atomiques et approche chirurgicale

  • Ajouts partiels

    • seulement certains fichiers ou certaines parties de fichiers
  • Unstaging

    • Annuler le dernier commit
    • Modifier le dernier commit
    • Raccourcis fréquents et pratiques

Gérer l’urgence avec le stash

  • Mettre son travail de côté le temps d’une tâche urgente

  • Récupérer le stash

    • façon classique ou dans une nouvelle branche,
    • avec ou sans le stage
    • avec ou sans les untracked
  • Aspect pratique face au conservatisme de Git lors d’une demande de fusion

Récupérer un commit « perdu »

  • Le reflog

  • Modalités de préservation et de purge

Gestion de branches

  • Une branche en Git, c’est quoi au juste ? Contraste avec les systèmes plus classiques (SVN, etc.)

  • Fusion classique

  • Fast-forward

  • Stratégies de fusion et décisions automatiques

  • Méthodologie de résolution de conflits

  • Fusion vs. Rebasing : quand, pour qui, pourquoi ?

  • Scenarii classiques de rebasing

  • Stratégies de gestion de branches et de collaboration

Git reset, le couteau suisse méconnu de Git

  • Un reset, qu’est-ce que c’est ?

  • Les 5 modes de reset

  • Scenarii classiques où reset nous sauve la vie

  • Resets irréparables ou non

  • Ne jamais perdre un commit grâce au reflog

Prendre soin de son historique de révisions

  • Un historique au cordeau : quels intérêts ?

  • Réordonner les commits

  • Supprimer des commits

  • Découper des commits

  • Fusionner des commits

  • Annuler un commit ancien

Dépôts distants

  • Autant de remotes qu’on veut…

  • Protocoles réseau de Git : préférences selon le contexte

  • Bien comprendre les relations entre fetch, merge, rebase, pull et push

  • Tracking ou non ?

  • Branches distantes vs. branches locales

  • Les bons réflexes pour avoir un push et un pull qui fonctionnent bien

Récupérer des portions choisies de l’historique

  • Cherry-picking

  • Lister rapidement les commits et branches pertinents

Traquer automatiquement l’origine d’un bug

  • Principe de recherche dichotomique

  • Exécution manuelle de git bisect

  • Scripting et automatisation de bisect

Enregistrer puis partager la résolution manuelle d’une fusion

  • Configuration du rerere

  • Enregistrer la résolution du conflit

  • Exploitation automatique et vérification manuelle

  • Workflow appliqué : éviter les merges de contrôle sur les branches de longue durée