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 :
Une interface ncurses pour git : tig
tig
Pour pouvoir lire les diff
s 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.