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.
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)
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:
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
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.
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.
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
.