59 points par GN⁺ 2024-02-17 | 4 commentaires | Partager sur WhatsApp
  • pull.ff only ou pull.rebase true

    • Ces deux réglages servent à éviter de créer par erreur un commit de fusion lors de l’exécution de git pull lorsque la branche a divergé de la branche amont.
    • pull.rebase true revient à exécuter git pull --rebase à chaque fois.
    • pull.ff only revient à exécuter git pull --ff-only à chaque fois.
    • Utiliser les deux en même temps n’a pas de sens, car --ff-only remplace --rebase.
  • merge.conflictstyle zdiff3

    • Réglage qui rend les conflits de fusion plus lisibles.
    • diff3 modifie la façon dont les conflits de fusion sont affichés par défaut en montrant le code d’origine au milieu.
    • zdiff3 est une version améliorée de diff3, généralement considérée comme meilleure.
  • rebase.autosquash true

    • Fonction qui facilite la modification d’anciens commits.
    • Si vous créez un commit avec git commit --fixup OLD_COMMIT_ID, alors lors de l’exécution de git rebase --autosquash main, le commit fixup! est automatiquement fusionné avec sa cible.
  • rebase.autostash true

    • Exécute automatiquement git stash puis git stash pop avant et après git rebase.
  • push.default simple, push.default current

    • Permet de pousser automatiquement la branche courante vers une branche distante du même nom.
    • push.default simple est le réglage par défaut et ne fonctionne que si la branche suit déjà une branche distante.
    • push.default current pousse toujours la branche locale vers une branche distante portant le même nom.
  • init.defaultBranch main

    • Crée la branche main au lieu de master lors de la création d’un nouveau dépôt.
  • commit.verbose true

    • Ajoute le diff complet du commit dans l’éditeur de texte utilisé pour rédiger le message de commit, ce qui aide à se souvenir de ce qui a été modifié.
  • rerere.enabled true

    • Mémorise la façon dont vous avez résolu les conflits de fusion pendant git rebase et les résout automatiquement ensuite.
  • help.autocorrect 10

    • La correction automatique de git vérifie les fautes de frappe mais n’exécute pas automatiquement la commande corrigée.
    • Pour l’exécuter automatiquement, définissez help.autocorrect sur 1, 10, immediate ou prompt.
  • core.pager delta

    • Le « pager » utilisé pour afficher la sortie de git diff, git log, git show, etc.
    • Configure delta, un outil avancé d’affichage des diff avec coloration syntaxique.
  • diff.algorithm histogram

    • L’algorithme de diff par défaut pose souvent problème lorsque l’ordre des fonctions change.
    • diff.algorithm histogram l’affiche de façon plus claire.
  • core.excludesfile : .gitignore global

    • Configure un fichier gitignore global appliqué à tous les dépôts.
  • includeIf : configurations git séparées pour le personnel et le travail

    • Utilisé pour configurer des adresses e-mail différentes pour les dépôts personnels et professionnels.
  • url."git@github.com:".insteadOf 'https://github.com/'

  • fsckobjects : prévention de la corruption des données

    • Réglage qui a sauvé l’équipe plusieurs fois en détectant activement la corruption des données.
  • Réglages liés aux submodules

    • status.submoduleSummary true
    • diff.submodule log
    • submodule.recurse true
  • Autres réglages

    • blame.ignoreRevsFile .git-blame-ignore-revs
    • branch.sort -committerdate
    • color.ui false
    • commit.cleanup scissors
    • core.autocrlf false
    • core.editor emacs
    • credential.helper osxkeychain
    • diff.tool difftastic
    • diff.colorMoved default
    • diff.colorMovedWS allow-indentation-change
    • diff.context 10
    • fetch.prune true et fetch.prunetags
    • gpg.format ssh
    • log.date iso
    • merge.keepbackup false
    • merge.tool meld
    • push.followtags true
    • rebase.missingCommitsCheck error
    • rebase.updateRefs true
  • Méthode de configuration

    • En général, on configure ces options avec git config --global NAME VALUE.
    • Pour supprimer une option, il faut modifier ~/.gitconfig manuellement.
  • Réglages que l’auteur a changés après avoir écrit cet article

    • diff.algorithm histogram
    • branch.sort -committerdate
    • merge.conflictstyle zdiff3
  • Conclusion

    • Il est utile de demander aux gens quels sont leurs réglages favoris et de lister ceux qui sont le plus souvent cités.

L’avis de GN⁺

  • Le plus important dans cet article est qu’il permet de découvrir les options de configuration git que les développeurs utilisent fréquemment.
  • Pour les ingénieurs logiciels débutants qui utilisent git, ces réglages peuvent améliorer l’efficacité du travail et aider à résoudre les problèmes du quotidien.
  • En particulier, des réglages comme merge.conflictstyle zdiff3 ou rebase.autosquash true facilitent la résolution des conflits de fusion et la gestion de l’historique des commits, ce qui peut réduire les problèmes rencontrés pendant la collaboration.

4 commentaires

 
pril1 2024-02-23

Pour supprimer une option, vous pouvez aussi utiliser la commande git config --global --unset NAME.

 
rumbarum 2024-02-21

Pour vérifier votre configuration, ajoutez

git config --list.

 
pmc7777 2024-02-18

Dans mon environnement de développement principal, c’était configuré, puis dans un autre environnement ça ne l’était pas, et je me suis demandé pourquoi ça ne marchait pas… haha. Comme les développeurs utilisent Git tous les jours, j’aimerais que l’intérêt pour tout ce qui touche aux paramètres Git soit plus fort.

 
GN⁺ 2024-02-17
Avis Hacker News
  • Paramètres core.autocrlf et safecrlf
    • Empêchent de commit des fichiers en CRLF et forcent la conversion en LF
    • Possibilité de les surcharger avec gitattributes si nécessaire
  • Paramètre alias dans .gitconfig
    • Définition d’un alias pour afficher l’historique des commits sous forme de graphe compact
    • Configuration reprise d’une publication Stack Overflow
  • rebase.autosquash et alias fixup
    • Paramètres souvent utilisés pour automatiser le rebase après un commit
    • pull.rebase est aussi important, mais fixup est utilisé plus souvent
  • Utilité du paramètre insteadOf
    • Permet d’utiliser un raccourci lors de l’ajout d’un remote GitHub
    • Mention de divers paramètres comme advice.statusHints, include.path, remote "origin".fetch, interactive.singleKey, etc.
  • Exemple de configuration personnelle .gitconfig
    • Comprend divers réglages alias, tag, tar, log, pull, diff, difftool, pager, safe, advice, init
  • Configuration utilisant delta comme pager
    • Affichage des diff plus lisible et avec coloration syntaxique
    • Ajout d’un alias pour se placer sur la branche par défaut
  • Paramètre user.useConfigOnly pour utiliser plusieurs adresses e-mail
    • user.email est commenté, puis l’adresse e-mail est définie au moment du commit dans un nouveau dépôt
  • Nécessité de changer la valeur par défaut de merge.conflictstyle
    • Le style diff3 fournit davantage d’informations pour résoudre les conflits
  • Paramètres supplémentaires
    • core.commentChar, alias.newtask, alias.zip, git checkout -, format.pretty, configuration delta
  • Malentendu autour du paramètre branch.sort
    • Il trie en réalité par date de commit, et non par branche utilisée le plus récemment
  • Autre exemple de configuration personnelle .gitconfig
    • Paramètres alias.lg, alias.hist, alias.quick-push, alias.search, user, core, url
    • L’alias quick-push permet de définir un workflow simple

Le contenu ci-dessus résume les configurations .gitconfig personnelles partagées par des utilisateurs dans les commentaires de Hacker News, ainsi que leurs astuces Git favorites. Ces réglages visent à améliorer l’efficacité d’utilisation de Git, à automatiser certaines tâches et à améliorer l’expérience utilisateur.