Aller au contenu

7 Astuces git pour améliorer votre quotidien

Quelques petites astuces consolidées au fil du temps pour mieux s'en sortir avec git

Photo by Roseanna Smith / Unsplash

Quelques petites astuces consolidées au fil du temps pour mieux s'en sortir avec git

Séparez vos configs pro/perso par dossier

Documentation git : https://git-scm.com/docs/git-config#_conditional_includes

Si vous travaillez sur votre PC perso ou si vous contribuez aux projets open source sur votre PC de boulot, sachez que vous pouvez faire cohabiter plusieurs configs sur votre machine.

[user]
  email = mon-email-perso@example.com
  signingKey = "key::ssh-rsa XXXXXX identifier"

Config perso dans ~/.config/git/perso

[user]
  email = mon-email-pro@example.com

Config pro dans ~/config/git/work

[user]
  name = "Julien Tanguy"

[includeIf "gitdir:~/Perso"]
  path = "~/config/git/perso"
  
[includeIf "gitdir:~/Work"]
  path = "~/config/git/work"

Fichier de configuration principal ~/.config/git/config ou ~/.gitconfig

Git va automatiquement importer les bouts de configuration qui vont bien pour tous les sous-dossiers de Perso ou de Work

Git maintenance

Documentation Git: https://git-scm.com/docs/git-maintenance

Git maintenance permet de lancer en arrière plan des tâches de prefetch ou de calcul de graphes de commits. Votre machine récupérera automatiquement les objets git en arrière plan, ce qui rend les commandes de fetch ou de pull plus rapides.

Pour activer git maintenance sur vos repos, lancez la commande git maintenance register dans chacun de vos repos git.

Commandes git custom

Vous pouvez augmenter votre workflow git en créant des commandes git custom. Pour créer une commande git toto , il suffit de créer un script (ou un exécutable) nommé git-toto et le rendre visible dans le $PATH.

J'ai par exemple un script appelé git-jira qui me permet de créer de nouvelles branches à partir des tickets jira qui me sont assignés (avec une petite recherche grâce à fzf)

Create a branch name from assigned jira tickets
Create a branch name from assigned jira tickets. GitHub Gist: instantly share code, notes, and snippets.

Visualiser son historique

Documentation git-log: https://git-scm.com/docs/git-log

Avec git log --graph --oneline --decorate, vous pouvez facilement visualiser votre historique de commits. J'utilise tellement cette commande que j'ai deux alias pour ça:

[alias]
  lta = log --oneline --graph --decorate --all
  lt = !exec git log --oneline --graph --decorate HEAD origin/HEAD $(git rev-parse --abbrev-ref --symbolic-full-name @{u})

Fichier de configuration principal ~/.config/git/config ou ~/.gitconfig

L'alias git lt est un peu plus complexe mais son principe est simple: quand on travaille dans une grande équipe avec beaucoup de branches développées en parallèle, git log --oneline --graph --decorate --all peut afficher plein de choses qui ne sont pas utiles dans notre développement. Au lieu de --all on peut aussi passer une liste de références pour n'afficher que celles-ci. Ici je récupère par défaut trois références:

  • HEAD, ou ma branche en cours
  • origin/HEAD, ou la branche par défaut du repository (souvent main, master ou encore dev en fonction de vos pratiques git)
  • $(git rev-parse --abbrev-ref --symbolic-full-name @{u}) une commande qui me permet de récupérer le nom de la branche distante sur laquelle je push

Je peux également lister d'autres branches pour les rajouter au graphe. Par exemple git lt origin/jira-XXXX.

Voir plus d'informations dans un rebase interactif

Documentation git: https://git-scm.com/docs/git-config#Documentation/git-config.txt-rebaseinstructionFormat

Vous pouvez afficher plus d'infos dans votre rebase interactif grâce à la config rebase.instructionFormat

[rebase]
  instructionFormat = %s <%ae> ; affiche l'email du committer en plus du titre du commit

Fichier de configuration principal ~/.config/git/config ou ~/.gitconfig

Rerere

Documentation git : https://git-scm.com/docs/git-rerere

Git-rerere vous permet de sauvegarder automatiquement des résolutions de conflits pour les ré-appliquer par la suite si ces conflits apparaissent encore. Très utile lors de gros rebase de branches.

[rerere]
  enabled = true

Fichier de configuration principal ~/.config/git/config ou ~/.gitconfig

Gérer plusieurs repos simplement

Git offre des outils pour gérer plusieurs repos avec for-each-repo, malgré tout je lui préfère gita, un outil destiné à simplifier la gestion de plusieurs repos git.

GitHub - nosarthur/gita: Manage many git repos with sanity 从容管理多个git库
Manage many git repos with sanity 从容管理多个git库. Contribute to nosarthur/gita development by creating an account on GitHub.

On peut facilement voir l'état de nos repos avec gita ll, tout récupérer avec gita pull, ou encore faire une recherche dans plusieurs repos avec gita super grep CONSTANTE.

D'autres articles qui pourraient vous plaire :

Devenez accro aux crochets git
Apprenez à créer des hooks git pour automatiser vos tâches de développement et améliorer la qualité de vos projets.
Les commandes git essentielles démystifiées
Si git vous parait obscur et que vous souhaitez comprendre les différentes commandes à utiliser, ce guide est parfait pour vous.
5 ans de github-slug-action : Une aventure open source
🎯 D’un simple outil de normalisation des noms de branches, github-slug-action est devenu une GitHub Action incontournable pour CI/CD avec 11 000+ utilisateurs. Découvrez son parcours : évolutions techniques, gestion des failles de sécurité et contributions de la communauté open source.

Dernier