Quelques astuces git

Posté par Fabrice le lundi 22 avril 2019 Mis-à-jour le dimanche 14 mai 2023 Traduction : en

Quelques astuces git que j’utilise de temps en temps que j’oublie tout le temps…

Attention : Je ne suis pas un exemple à suivre comme utilisateur de git, et mes manières sont parfois un peu crues. Récemment, la majorité de mes commits sont dues à pass, et donc la plupart du temps, je suis en train de réparer mes propres erreurs.

Remettre la branche master master sur la branche distante origin/master :

git checkout origin/master -B master

Aller au commit précédent où on avait checkout (de manière similaire à cd -) :

git checkout -

Retrouver les commits disparus, c’est très utile lorsqu’on a envie de cherry-pick un commit orphelin qu’on a oublié il y a quelque temps :

git log --graph --reflog

Quelques explications s’imposent : --graph montre l’arbre des commits, ce qui se montre utile pour révéler les feuilles orphelines, et --reflog mets au jour tous nos secrets les plus sordides.

Vous avez peut-être remarqué que vos répertoires git prennent du volume. Pour corriger ça, on peut manuellement appeler le ramasse-miette de notre dépôt. C’est censé se faire tout seul, mais pas assez souvent selon mes standards.

git gc --aggressive

Pour ajouter un changement atomique dans un fichier (de manière interactive):

git add -p <file>

Unsafe : pour réécrire le passé en supprimant un fichier (par exemple si on a commité un donnée sensible):

git filter-branch --prune-empty --tree-filter "rm -f '<fichier>'" HEAD
git push --force

Une autre astuce utile : git commit -v, qui permet de réviser nos changements avant de commiter. Une image vaut mieux que mille mots :

Utilisation de git commit -v

Une interface ncurses pour git : tig

tig

Pour pouvoir lire les diffs plus facilement dans git, je recommande aussi d’utiliser delta : https://github.com/dandavison/delta. Ce programme permet de rendre la lecture de la sortie de git diff proche de ce qu'on peut retrouver dans une forge en ligne comme Gitlab en mettant en surbrillance l’endroit exact où a eu lieu la différence.

Une fois le paquet installé (sous le nom de git-delta, en tout cas sous archlinux), il suffit de configurer git via :

[core]
  pager = delta
[interactive]
  diffFilter = delta --color-only
[delta]
  navigate = true    # n et N pour se déplacer entre les blocs
  light = true      # pour les terminaux à fond clair
  theme=Monokai Extended Light
[merge]
  conflictstyle = diff3
[diff]
  colorMoved = default

Qui est une configuration très proche de celle proposée sur le dépôt GitHub du projet.

tags: git, termtosvg, cli