blog/content/cheat-sheets/git-fr.md

96 lines
3.1 KiB
Markdown
Raw Normal View History

2019-04-23 18:04:46 +00:00
---
Title: Quelques astuces git
Date: 2019-04-22 17:00
2023-05-14 18:22:31 +00:00
Modified: 2023-05-14 20:00+02:00
2019-04-23 18:04:46 +00:00
Author: Fabrice
2019-04-25 08:50:04 +00:00
Category: antisèches
2019-04-23 18:04:46 +00:00
Tags: git, termtosvg
Slug: git-tricks
Header_Cover: ../images/covers/water.jpg
2019-04-24 06:34:03 +00:00
Summary: Une compilation de commandes git que jutilise ponctuellement
2019-04-23 18:04:46 +00:00
Lang: fr
---
2023-05-14 18:22:31 +00:00
Quelques astuces [git](https://git-scm.com/) que jutilise de temps en temps que
joublie tout le temps…
2019-04-23 18:04:46 +00:00
2023-05-14 18:22:31 +00:00
**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]({filename}/software/pass-fr.md), et donc la plupart du temps, je suis en
train de réparer mes propres erreurs.
2019-04-23 18:04:46 +00:00
Remettre la branche master `master` sur la branche distante `origin/master`:
```sh
git checkout origin/master -B master
```
Aller au commit précédent où on avait checkout (de manière similaire à `cd -`):
```sh
git checkout -
```
2023-05-14 18:22:31 +00:00
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:
2019-04-23 18:04:46 +00:00
```sh
git log --graph --reflog
```
2023-05-14 18:22:31 +00:00
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.
2019-04-23 18:04:46 +00:00
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.
2019-04-24 06:34:03 +00:00
Cest censé se faire tout seul, mais pas assez souvent selon mes standards.
2019-04-23 18:04:46 +00:00
```sh
git gc --aggressive
```
Pour ajouter un changement atomique dans un fichier (de manière interactive):
```sh
git add -p <file>
```
2023-05-14 18:22:31 +00:00
**Unsafe:** pour réécrire le passé en supprimant un fichier (par exemple si on
a commité un donnée *sensible*):
2019-04-24 15:28:08 +00:00
```sh
git filter-branch --prune-empty --tree-filter "rm -f '<fichier>'" HEAD
git push --force
```
2019-04-23 18:04:46 +00:00
2023-05-14 18:22:31 +00:00
Une autre astuce utile: `git commit -v`, qui permet de réviser nos changements
avant de commiter.
2019-04-23 18:04:46 +00:00
Une image vaut mieux que mille mots:
2019-04-24 08:56:01 +00:00
<object data="/examples/git-cv.svg" width="100%">Utilisation de git commit -v</object>
2019-04-23 18:04:46 +00:00
Une interface ncurses pour git: [tig](https://jonas.github.io/tig/)
```sh
tig
```
2023-05-14 18:22:31 +00:00
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
2023-05-14 18:25:13 +00:00
[archlinux](https://archlinux.org/)), il suffit de configurer git via:
2023-05-14 18:22:31 +00:00
```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.