Add git-delta

This commit is contained in:
Fabrice Mouhartem 2023-05-14 20:22:31 +02:00
parent f12bf523ef
commit d7db410a4e
2 changed files with 81 additions and 19 deletions

View File

@ -1,7 +1,7 @@
--- ---
Title: Quelques astuces git Title: Quelques astuces git
Date: 2019-04-22 17:00 Date: 2019-04-22 17:00
Modified: 2019-04-24 20:08+05:30 Modified: 2023-05-14 20:00+02:00
Author: Fabrice Author: Fabrice
Category: antisèches Category: antisèches
Tags: git, termtosvg Tags: git, termtosvg
@ -11,10 +11,14 @@ Summary: Une compilation de commandes git que jutilise ponctuellement
Lang: fr Lang: fr
--- ---
Quelques astuces [git](https://git-scm.com/) que jutilise de temps en temps que joublie tout le temps… Quelques astuces [git](https://git-scm.com/) que jutilise de temps en temps que
joublie tout le temps…
**Attention:** Je ne suis pas un exemple à suivre comme utilisateur de git, et mes manières sont parfois un peu crues. **Attention:** Je ne suis pas un exemple à suivre comme utilisateur de git, et
Récemment, la majorité de mes commits sont dues à [pass]({filename}/software/pass-fr.md), et donc la plupart du temps, je suis en train de réparer mes propres erreurs. mes manières sont parfois un peu crues.
Récemment, la majorité de mes commits sont dues à
[pass]({filename}/software/pass-fr.md), 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`: Remettre la branche master `master` sur la branche distante `origin/master`:
```sh ```sh
@ -27,11 +31,14 @@ git checkout -
``` ```
Retrouver les commits disparus, cest très utile lorsquon a envie de `cherry-pick` un commit orphelin quon a oublié il y a quelque temps: Retrouver les commits disparus, cest très utile lorsquon a envie de
`cherry-pick` un commit orphelin quon a oublié il y a quelque temps:
```sh ```sh
git log --graph --reflog git log --graph --reflog
``` ```
Quelques explications simposent: `--graph` montre larbre 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. Quelques explications simposent: `--graph` montre larbre 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. 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. Pour corriger ça, on peut manuellement appeler le ramasse-miette de notre dépôt.
@ -44,13 +51,15 @@ Pour ajouter un changement atomique dans un fichier (de manière interactive):
```sh ```sh
git add -p <file> git add -p <file>
``` ```
**Unsafe:** pour réécrire le passé en supprimant un fichier (par exemple si on a commité un donnée *sensible*): **Unsafe:** pour réécrire le passé en supprimant un fichier (par exemple si on
a commité un donnée *sensible*):
```sh ```sh
git filter-branch --prune-empty --tree-filter "rm -f '<fichier>'" HEAD git filter-branch --prune-empty --tree-filter "rm -f '<fichier>'" HEAD
git push --force git push --force
``` ```
Une autre astuce utile: `git commit -v`, qui permet de réviser nos changements avant de commiter. 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 image vaut mieux que mille mots:
<object data="/examples/git-cv.svg" width="100%">Utilisation de git commit -v</object> <object data="/examples/git-cv.svg" width="100%">Utilisation de git commit -v</object>
@ -60,3 +69,27 @@ Une interface ncurses pour git: [tig](https://jonas.github.io/tig/)
tig tig
``` ```
Pour pouvoir lire les `diff`s plus facilement dans git, je recommande aussi
dutiliser `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 lendroit exact où a eu lieu la différence.
Une fois le paquet installé (sous le nom de `git-delta`, en tout cas sous
[archlinux](https://archlinux.org/)), il suffit de configurer git via:
```gitconfig
[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.

View File

@ -1,7 +1,7 @@
--- ---
Title: Some git tricks Title: Some git tricks
Date: 2019-04-22 17:00 Date: 2019-04-22 17:00
Modified: 2019-04-24 20:08+05:30 Modified: 2023-05-14 20:00+2:00
Author: Fabrice Author: Fabrice
Category: cheat sheets Category: cheat sheets
Tags: git, termtosvg Tags: git, termtosvg
@ -11,10 +11,13 @@ Summary: A compilation of some `git` tricks I keep forgetting.
Lang: en Lang: en
--- ---
Some [git](https://git-scm.com/) tricks I use from time to time and that I forgot everytime… Some [git](https://git-scm.com/) tricks I use from time to time and that I
forgot everytime…
**Disclaimer:** I'm not the perfect git user, and my way of using it is especially crude. **Disclaimer:** I'm not the perfect git user, and my way of using it is
Recently, most of my git commits are due to [pass]({filename}/software/pass.md), therefore most of those commands are here to fix my own mistakes. especially crude.
Recently, most of my git commits are due to [pass]({filename}/software/pass.md),
therefore most of those commands are here to fix my own mistakes.
Reset `master` to `origin/master`: Reset `master` to `origin/master`:
```sh ```sh
@ -26,13 +29,17 @@ Jump back and forth from a commit to another (same behaviour as :
git checkout - git checkout -
``` ```
Find back lost commits, especially useful when you are doing dirty things and want to `cherry-pick` an orphan commit (for instance): Find back lost commits, especially useful when you are doing dirty things and
want to `cherry-pick` an orphan commit (for instance):
```sh ```sh
git log --graph --reflog git log --graph --reflog
``` ```
Some explanations: `--graph` show the commit tree, which is useful to notice the orphan leafs, and `--reflog` shows the world all the dirtiness you've done. Some explanations: `--graph` show the commit tree, which is useful to notice the
orphan leafs, and `--reflog` shows the world all the dirtiness you've done.
If you noticed that your folder grows, you can manually cast the garbage collector on it. It should do it automatically, but not often enough according to my standards. If you noticed that your folder grows, you can manually cast the garbage
collector on it. It should do it automatically, but not often enough according
to my standards.
```sh ```sh
git gc --aggressive git gc --aggressive
``` ```
@ -42,13 +49,15 @@ To add changes in an atomic fashion on a file (in an interactive way):
git add -p <file> git add -p <file>
``` ```
**Unsafe:** to remove a file from the past (for instance when you commit some *sensitive* file): **Unsafe:** to remove a file from the past (for instance when you commit some
*sensitive* file):
```sh ```sh
git filter-branch --prune-empty --tree-filter "rm -f '<file name>'" HEAD git filter-branch --prune-empty --tree-filter "rm -f '<file name>'" HEAD
git push --force git push --force
``` ```
Another useful trick is `git commit -v`, it allows reviewing your changes before committing. Another useful trick is `git commit -v`, it allows reviewing your changes before
committing.
<object data="/examples/git-cv.svg" width="100%">Use of git commit -v</object> <object data="/examples/git-cv.svg" width="100%">Use of git commit -v</object>
@ -57,5 +66,25 @@ A ncurse-based interface for git: [tig](https://jonas.github.io/tig/)
tig tig
``` ```
<!-- vim: spl=en To make `diff`s more readable, I highly recommend to use delta as a diff filter:
--> <https://github.com/dandavison/delta>.
It makes the display of `git diff` close to what you can get in a browser
repository, highlighting the places where diffs actually happen and is highly
reconfigurable.
Once it is installed in your package manager, you can for instance configure it
as follows (mostly the same as in the GitHub page):
```gitconfig
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true # use n and N to move between diff sections
light = true # set to true if you're in a terminal w/ a light background
theme=Monokai Extended Light
[merge]
conflictstyle = diff3
[diff]
colorMoved = default
```