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 j’utilise 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 j’utilise de temps en temps que
|
|
|
|
|
j’oublie 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, c’est très utile lorsqu’on a envie de
|
|
|
|
|
`cherry-pick` un commit orphelin qu’on 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 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.
|
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
|
|
|
|
C’est 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
|
|
|
|
|
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
|
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.
|