Skip to article frontmatterSkip to article content

on contextualise

nous avons vu précédemment qu’un dépôt git de travail se compose des trois morceaux : fichiers / index / commits
on a vu qu’un dépôt propre est un dépôt dans lequel ces trois étages ont des contenus identiques
et on a vu comment “faire avancer” une modification, en deux phases :

mais cela, ça ne couvre que le cas idéal où on ne se trompe jamais, où on ne change pas d’avis
mais dans la vraie vie bien sûr, ce n’est pas comme ça que ça fonctionne, et on a besoin de pouvoir rétropédaler

terminal ou GUI

dans ce notebook on résume les commandes utiles pour visualiser / gérer / abandonner les différences pendantes

depuis le terminal

le workflow usuel

dans un premier temps on revoit, sous une forme visuelle, les commandes qu’on a déjà pratiquées


un dépôt propre

on utilisera ce type de présentation dans la suite :


git status et git diff

en général le dépôt n’est pas propre, on peut voir les (deux familles de) différences avec ces 2 commandes


j’utilise mon éditeur

le changement que je sauve δ s’ajoute en fait aux différences existantes, qui s’accumulent évidemment.


git add

la différence apparait maintenant dans la deuxième zone (staged changes)


git commit

on crée le nouveau commit sur la base du contenu de l’index, du coup les deux (l’index et le dernier commit) sont maintenant égaux

pour revenir en arrière

jusqu’à maintenant on a travaillé “de gauche à droite”
à présent on va voir des commandes nouvelles, qui permettent principalement de défaire la progression des changements", et donc d’aller “de droite à gauche”

attention du coup car en faisant ça :

à utiliser avec précaution donc; mais ça a une vraie utilité !


git restore --staged

pour annuler le add : si un changement a été promu dans l’index, on peut le déclasser


git restore

pour jeter les changements non indexés


git restore --worktree --staged

pour se mettre inconditionnellement sur un commit, avec un dépôt propre


refaire un commit avec git commit --amend

vous venez de faire un commit mais il est raté !
en général ça peut venir

  1. soit du texte du message qu’on a tapé trop vite
  2. soit c’est plus profond, c’est le contenu
  3. plus rarement c’est le nom de l’auteur qui est faux

dans tous les cas, pas de panique, git commit --amend est fait pour ça

le principe c’est de:

si bien que, selon le cas qui vous concerne parmi ceux listés plus haut, vous pouvez:

  1. pour récrire votre message, refaites simplement
    git commit --amend
    qui vous ouvrira votre éditeur avec le message du commit courant

  2. si c’est plus profond:

    • ajoutez dans l’index les changements qui manquent au commit courant
    • avant de faire ici encore git commit --amend
    • vous pouvez même ajouter l’option --no-edit si le message était correct
  3. pour le dernier cas, faites ceci
    git commit --amend --author="Jean Dupont <jean.dupont@example.com>"

utiliser une GUI

signalons enfin qu’il existe plein d’outils graphiques pour simplifier l’utilisation de git, et notamment, surtout au début, pour

voici rapidement quelques outils gratuits qui sont bien pratiques

vs-code

on a déjà présenté l’extension git dans vs-code, qui a l’avantage d’être intégrée nativement, mais peut vite s’avérer limitée

pour utiliser l’extension native ‘git’, rien à installer, il faut simplement cliquer sur l’extension dans la barre de gauche voici comment on navigue dans les différences avec vs-code

si en plus vous installez l’extension ‘git graph’, vous pourrez aussi voir le graphe des commits directement dans vs-code

Sourcetree

l’outil Sourcetree (malheureusement pas supporté sous linux) visualise les deux classes de différences comme ceci

voici une autre vue qui visualise aussi le graphe des commits

GitKraken

l’outil GitKraken, qui est disponible cette fois sur linux, les présente quant à lui comme ceci

ici encore l’outil sait afficher le graphe des commits