Comment les développeurs core de Git configurent-ils et utilisent-ils Git ?
(blog.gitbutler.com)- Scott Chacon, auteur de « Pro Git », explique quelques réglages Git qu’il a activés globalement et pourquoi
- Une grande partie de ces réglages lui viennent en réalité de développeurs qui travaillent sur le code source core de Git
- Voici une configuration
~/.gitconfigqui rend Git meilleur[column] ui = auto [branch] sort = -committerdate [tag] sort = version:refname [init] defaultBranch = main [diff] algorithm = histogram colorMoved = plain mnemonicPrefix = true renames = true [push] default = simple autoSetupRemote = true followTags = true [fetch] prune = true pruneTags = true all = true # Pourquoi s’en priver ? [help] autocorrect = prompt [commit] verbose = true [rerere] enabled = true autoupdate = true [core] excludesfile = ~/.gitignore [rebase] autoSquash = true autoStash = true updateRefs = true # Réglages selon les préférences personnelles (décommentez si nécessaire) [core] # fsmonitor = true # untrackedCache = true [merge] # (utiliser « diff3 » si votre version de Git est antérieure à 2.3) # conflictstyle = zdiff3 [pull] # rebase = true
Comment les développeurs core de Git configurent-ils Git ?
- Sur la mailing list Git, Felipe Contreras a déjà proposé à l’équipe core de supprimer tous leurs réglages et alias pour essayer Git tel quel, avec sa configuration par défaut
- À l’issue de cette expérience, 9 réglages et 3 alias ont été proposés comme nouvelles valeurs par défaut
merge.conflictstyle = zdiff3 rebase.autosquash = true rebase.autostash = true commit.verbose = true diff.colorMoved = true diff.algorithm = histogram grep.patternType = perl feature.experimental = true branch.sort = committerdate - Ces réglages n’ont pas encore été adoptés comme valeurs par défaut
- Mais il est intéressant de constater que beaucoup de développeurs Git ont du mal à utiliser Git sans en activer au moins certains
- Plus intéressant encore : la plupart d’entre vous ne savent probablement pas du tout ce que cela signifie
- L’article les explique en trois catégories
- Ce qui rend clairement Git meilleur (Clearly Makes Git Better)
- Pourquoi s’en priver ? (Why the Hell Not?)
- Une question de goût (A Matter of Taste)
# Ce qui rend clairement Git meilleur
Trier la liste des branches
- Par défaut, Git trie les branches par ordre alphabétique, mais il peut être plus utile de les trier par date du dernier commit
- Les réglages suivants permettent de trier les branches par commits récents et de les afficher en colonnes
git config --global column.ui auto git config --global branch.sort -committerdate
Trier la liste des tags
- Pour trier les tags par version plutôt que par ordre alphabétique, utilisez ce réglage
git config --global tag.sort version:refname
Définir le nom de la branche par défaut
- Pour définir le nom de la branche par défaut lors de l’initialisation d’un nouveau dépôt, utilisez ceci
git config --global init.defaultBranch main
Améliorer les réglages de diff
- Remplace l’algorithme de diff par défaut par
histogrampour obtenir des comparaisons plus précises - Pour détecter les déplacements de code et les afficher en couleur, ajoutez ces réglages
git config --global diff.algorithm histogram git config --global diff.colorMoved plain git config --global diff.mnemonicPrefix true git config --global diff.renames true
Améliorer les réglages de push
- Les réglages suivants permettent d’améliorer le comportement de
pushgit config --global push.default simple git config --global push.autoSetupRemote true git config --global push.followTags true
Améliorer les réglages de fetch
- Pour supprimer automatiquement les branches et tags inutiles lors d’un
fetch, utilisez ces réglagesgit config --global fetch.prune true git config --global fetch.pruneTags true git config --global fetch.all true
# Pourquoi s’en priver ?
Invite de correction automatique
- Pour détecter les fautes de frappe dans les commandes et proposer une correction, utilisez ceci
git config --global help.autocorrect prompt
Afficher le diff au moment du commit
- Pour afficher aussi les modifications pendant la rédaction du message de commit, ajoutez ce réglage
git config --global commit.verbose true
Réutiliser la résolution des conflits
- Pour réutiliser automatiquement des résolutions de conflits précédentes, utilisez les réglages suivants
git config --global rerere.enabled true git config --global rerere.autoupdate true
Définir un fichier .gitignore global
- Pour définir globalement des fichiers à ignorer, configurez ceci
git config --global core.excludesfile ~/.gitignore
Améliorer les réglages de rebase
- Pour effectuer automatiquement un squash et un stash lors d’un rebase, utilisez ces réglages
git config --global rebase.autoSquash true git config --global rebase.autoStash true git config --global rebase.updateRefs true
# Une question de goût
Améliorer l’affichage des conflits de merge
- Pour afficher aussi la version de base lors d’un conflit de fusion, ce réglage peut être utile
git config --global merge.conflictstyle zdiff3
Utiliser rebase avec pull
- Pour lancer automatiquement un rebase lors d’un
git pull, configurez cecigit config --global pull.rebase true
Accélérer la détection des modifications de fichiers
- Pour améliorer les performances de commandes comme
git status, vous pouvez utiliser ces réglagesgit config --global core.fsmonitor true git config --global core.untrackedCache true
# Conclusion
- Grâce à ces réglages, Git peut devenir plus agréable à utiliser, et certains sont activement utilisés même par les développeurs core
- En optimisant la configuration de Git, il est possible d’améliorer son flux de travail et de l’utiliser plus efficacement
7 commentaires
« Le plus intéressant, c’est que la plupart d’entre vous n’ont absolument aucune idée de ce que cela signifie. » Ça pique juste là où il faut. Tremblement.
Ce n’est pas
--global, mais-global?--globalest correct. Il y a eu une erreur lors du copier-coller. Cela a été corrigé.Options de configuration Git populaires
La réutilisation de la résolution des conflits, c’est vraiment bien.
Pour les diff, j’utilise
git-deltaafin de les afficher dans un format TUI.Sinon, si on veut éviter de se compliquer la vie,
tig... hahahaIl y aurait quelque chose de mieux... ?
Commentaires Hacker News
git out. Il liste tous les commits qui n’ont pas été poussés. Je l’utilise tout le temps~/.gitconfig, je recommande vivement delta comme compagnon du CLI de git~/.gitconfigressemble à cecigit config --global core.pager batcatavec coloration syntaxique