git config

Dans ce document, nous allons examiner en détail la commande git config. Nous avons brièvement discuté de l'utilisation de git config sur notre page Configuration d'un dépôt. La commande git config est une fonction pratique utilisée pour définir des valeurs de configuration Git au niveau global ou local d'un projet. Ces niveaux de configuration correspondent aux fichiers texte .gitconfig. L'exécution de git config modifiera un fichier texte de configuration. Nous allons couvrir les paramètres de configuration fréquents comme l'e-mail, le nom d'utilisateur et l'éditeur. Nous allons discuter des alias Git, qui vous permettent de créer des raccourcis pour les opérations Git fréquentes. Vous familiariser avec git config et les différents paramètres de configuration Git vous aidera à créer un workflow Git efficace et personnalisé.

Utilisation

Le cas d'usage le plus élémentaire pour git config consiste à l'appeler avec un nom de configuration, qui affichera la valeur définie à ce nom. Les noms de configuration sont des chaînes délimitées par des points et composées d'une « section » et d'une « clé » en fonction de leur hiérarchie. Par exemple : user.email

git config user.email

Dans cet exemple, « email » est une propriété enfant du bloc de configuration de l'utilisateur. Cela renvoie l'adresse e-mail configurée, le cas échéant, que Git associera à des commits créés en local.

Niveaux de configuration et fichiers associés à git config

Avant d'aborder plus avant l'utilisation de git config, prenons le temps de parler des niveaux de configuration. La commande git config peut accepter des arguments de manière à spécifier le niveau de configuration sur lequel agir. Les niveaux de configuration suivants sont disponibles :

  • --local

Par défaut, git config écrira à un niveau local si aucune option de configuration n'est transmise. La configuration au niveau local s'applique au contexte dans lequel le dépôt git config est appelé. Les valeurs de configuration locales sont stockées dans un fichier situé dans le répertoire .git du dépôt : .git/config
 

  •  --global

La configuration au niveau global varie en fonction de l'utilisateur, ce qui signifie qu'elle s'applique à un utilisateur du système d'exploitation. Les valeurs de la configuration globale sont stockées dans un fichier situé dans le répertoire de base d'un utilisateur. ~ /.gitconfig sur les systèmes Unix et C:\Users\<nom_utilisateur>\.gitconfig sous Windows
 

  •  --system

La configuration de niveau système est appliquée à une machine complète. Cela concerne tous les utilisateurs d'un système d'exploitation et tous les dépôts. Le fichier de configuration de niveau système réside dans un fichier gitconfig extrait du chemin d'accès à la racine du système. Il se trouve dans $(prefix)/etc/gitconfig sur les systèmes Unix. Concernant les systèmes Windows, ce fichier se trouve dans C:\Documents and Settings\All Users\Application Data\Git\config sous Windows XP et dans C:\ProgramData\Git\config sous Windows Vista ou des versions plus récentes.

Par conséquent, l'ordre de priorité des niveaux de configuration est : local, global, système. Autrement dit, pour chercher une valeur de configuration, Git procède du niveau local au niveau système.
 

Écriture d'une valeur

En nous basant sur ce que nous savons déjà de la commande git config, voyons un exemple d'écriture de valeur :

git config --global user.email "votre_email@exemple.com"

Cet exemple écrit la valeur your_email@example.com pour le nom de configuration user.email. Il utilise le flag --global pour que cette valeur soit définie pour l'utilisateur actuel du système d'exploitation.

git config editor – core.editor

De nombreuses commandes Git permettront de lancer un éditeur de texte invitant à saisir des données supplémentaires. L'un des exemples d'utilisation de git config les plus courants concerne la configuration de l'éditeur que Git doit utiliser. Vous trouverez ci-dessous un tableau répertoriant les éditeurs les plus populaires et les commandes git config associées :

Editor Commande config
Atom ~ git config --global core.editor "atom --wait"~
emacs ~ git config --global core.editor "emacs"~
nano ~ git config --global core.editor "nano -w"~
vim ~ git config --global core.editor "vim"~
Sublime Text (Mac) ~ git config --global core.editor "subl -n -w"~
Sublime Text (Windows, installation 32 bits) ~ git config --global core.editor "'c:/program files (x86)/sublime text 3/sublimetext.exe' -w"~
Sublime Text (Windows, installation 64 bits) ~ git config --global core.editor "'c:/program files/sublime text 3/sublimetext.exe' -w"~
Textmate ~ git config --global core.editor "mate -w"~

 

Outils de merge

En cas de conflit de merge, Git lancera un « outil de merge ». Par défaut, Git utilise une implémentation interne du programme diff Unix classique. Le git diff interne est une visionneuse de conflit de merge minimale. De nombreuses méthodes de résolution de conflits de merge tierces externes peuvent être utilisées à la place. Pour obtenir un aperçu des différents outils de merge et de la configuration, consultez notre guide des astuces et outils pour résoudre les conflits avec Git

git config --global merge.tool kdiff3

Sorties colorées

Git prend en charge les sorties de terminal en couleur, ce qui en facilite la lecture. Vous pouvez personnaliser votre sortie Git pour utiliser un thème de couleur personnalisé. La commande git config est utilisée pour définir ces valeurs de couleur.

color.ui

Il s'agit de la principale variable de couleurs Git. Si vous la définissez sur false, toutes les sorties couleur de terminal associées à Git seront désactivées.
 

$ git config --global color.ui false

Par défaut, color.ui est défini sur « auto », ce qui applique des couleurs au flux de sortie immédiat du terminal. Le paramètre « auto » omet la sortie du code couleur si le flux de sortie est redirigé vers un fichier ou acheminé vers un autre processus.

Vous pouvez définir la valeur color.ui sur always ; le code couleur en sortie s'appliquera alors aussi en cas de redirection du flux de sortie vers des fichiers ou des canaux. Cela peut entraîner des problèmes accidentels, car le canal de réception risque de ne pas s'attendre au code couleur en entrée.

Valeurs de couleur Git

Outre color.ui, il existe beaucoup de paramètres de couleur granulaires. Comme color.ui, ces paramètres de couleur peuvent tous être définis sur « false », « auto » ou « always ». Ces paramètres de couleur peuvent également être définis sur une valeur de couleur spécifique. Voici quelques exemples de valeurs de couleur prises en charge :

  • normal
  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • blanc

Les couleurs peuvent également être spécifiées avec des codes couleur hexadécimaux comme #ff0000 ou de valeurs de code ANSI 256 si votre terminal les prend en charge.

Paramètres de configuration de couleur de Git

1. color.branch 

  • Configure la couleur de sortie de la commande git branch 

2. color.branch.<emplacement

  • Cette valeur est également applicable à la sortie de branche Git. <emplacement> correspond à : 
    • 1. current : la branche courante 
    • 2. local : une branche locale 
    • 3. remote : une réf de branche distante dans refs/remotes 
    • 4. upstream : une branche de suivi en amont 
    • 5. plain : toute autre réf

3. color.diff 

  • Applique des couleurs aux sorties git diff, git log et git show 

4. color.diff.<emplacement

  • La configuration d'une valeur <emplacement> sous color.diff indique à Git sur quelle partie du patch appliquer une couleur. 
    • 1. context : le texte contextuel de diff. Git context est représenté par les lignes de contenu affichées dans un diff ou un patch pour mettre en évidence les changements. 
    • 2. plain : un synonyme de contexte 
    • 3. meta : applique la couleur aux métainformations du diff 
    • 4. frag : applique la couleur à l'en-tête de bloc ou à une fonction de l'en-tête de bloc 
    • 5. old : applique une couleur aux lignes supprimées dans la comparaison 
    • 6. new : colorie les lignes ajoutées du diff 
    • 7. commit : colore les en-têtes de commit dans le diff 
    • 8. whitespace : définit une couleur pour une erreur d'espace dans un diff

5. color.decorate.<emplacement

  • Personnalisez la couleur de la sortie git log --decorate. Les valeurs <emplacement> prises en charge sont : branch, remoteBranch, tag, stash ou HEAD. Elles s'appliquent respectivement aux branches locales, aux branches de suivi distantes, aux tags, aux changements stashés et à HEAD

6. color.grep

  • Applique la couleur à la sortie de git grep. 

7. color.grep.<emplacement

  • Également applicable à git grep. La variable <emplacement> indique la partie de la sortie grep à laquelle appliquer la couleur. 
    • 1. context : texte non concordant dans les lignes de contexte 
    • 2. filename : préfixe du nom de fichier 
    • 3. function : lignes de noms de fonctions 
    • 4. linenumber : préfixe de numéro de ligne 
    • 5. match : texte correspondant 
    • 6. matchContext : texte correspondant dans les lignes de contexte 
    • 7. matchSelected : texte concordant dans les lignes sélectionnées 
    • 8. selected : texte non concordant dans les lignes sélectionnées 
    • 9. separator : séparateurs entre les champs d'une ligne (:, - et =) et entre des blocs (--) 

8. color.interactive 

  • Cette variable applique de la couleur pour les invites et les affichages interactifs. Exemples : git add --interactive et git clean --interactive 

9. color.interactive.<emplacement> 

  • La variable <emplacement> peut être spécifiée pour cibler une « sortie interactive » plus spécifique. Les valeurs <emplacement> disponibles sont : prompt, header, help, error. Chacune d'elles agit sur la sortie interactive correspondante. 

10. color.pager

  • Active ou désactive la sortie en couleurs lorsque la page est utilisée 

11. color.showBranch 

  • Active ou désactive la sortie en couleurs pour la commande git show-branch 

12. color.status 

  • Une valeur booléenne qui active ou désactive la sortie couleur pour le statut Git 

13. color.status.<emplacement>

Utilisé pour indiquer la couleur personnalisée des éléments git status spécifiés. <emplacement> prend en charge les valeurs suivantes :

  • 1. header
    • Cible le texte d'en-tête de la zone d'état
  • 2. added ou updated
    • Les deux fichiers cibles qui sont ajoutés, mais pas commités
  • 3. changed
    • Cible les fichiers modifiés, mais pas ajoutés à l'index Git
  • 4. untracked
    • Les fichiers cibles ne sont pas trackés par Git
  • 5. branch
    • Applique une couleur à la branche courante
  • 6. nobranch
    • La couleur de l'avertissement « no branch » s'affiche
  • 7. unmerged
    • Colore les fichiers comportant des changements non mergés

Alias

Vous connaissez peut-être déjà le concept des alias à travers la ligne de commande de votre système d'exploitation ; si ce n'est pas le cas, il existe des raccourcis personnalisés qui peuvent être configurés pour représenter des commandes plus longues ou combinées. Les alias vous permettent de gagner du temps et de l'énergie en évitant d'avoir à saisir les commandes fréquemment utilisées. Git propose son propre système d'alias. Un exemple courant d'utilisation des alias Git est la réduction de la commande commit. Les alias Git sont stockés dans les fichiers de configuration Git. Ainsi, vous pouvez utiliser la commande git config pour configurer des alias.

git config --global alias.ci commit

Cet exemple crée un alias ci pour la commande git commit. Vous pouvez ensuite appeler git commit en exécutant git ci. Les alias peuvent également faire référence à d'autres alias pour créer de puissantes combinaisons.

git config --global alias.amend ci --amend

Dans cet exemple, nous créons un alias amend qui intègre l'alias ci dans un nouvel alias utilisant le flag --amend.

Formatage et espace

Git dispose de plusieurs fonctionnalités « whitespace » qui peuvent être configurées pour mettre en évidence les erreurs d'espace lors de l'utilisation de git diff. Ces erreurs seront mises en évidence à l'aide de la couleur configurée color.diff.whitespace.

Les fonctionnalités suivantes sont activées par défaut :

  • blank-at-eol met en évidence les espaces blancs orphelins en fin de ligne.
  • space-before-tab met en évidence un caractère d'espacement apparaissant avant un caractère d'onglet lors d'un retrait d'une ligne.
  • blank-at-eof met en évidence les lignes vides insérées à la fin d'un fichier

Les fonctionnalités suivantes sont désactivées par défaut :

  • indent-with-non-tab met en évidence une ligne en retrait plutôt que des onglets
  • tab-in-indent met en évidence un retrait de tabulation initial comme une erreur.
  • trailing-space est un raccourci pour blank-at-eol et blank-at-eof.
  • cr-at-eol met en évidence un retour chariot en fin de ligne
  • tabwidth=<n> définit le nombre de positions de caractères occupées par une tabulation. La valeur par défaut est 8. Les valeurs autorisées sont 1 à 63.

Summary

Dans cette article, nous avons présenté l'utilisation de la commande git config. Nous avons expliqué dans quelle mesure la commande se prêt à l'édition de fichiers git config bruts sur le système de fichiers. Nous avons exploré les opérations de lecture et d'écriture de base pour les options de configuration. Nous avons examiné les modèles de configuration classiques :

  • Comment configurer l'éditeur Git ?
  • Comment ignorer des niveaux de configuration
  • Comment réinitialiser la configuration par défaut ?
  • Comment personnaliser des couleurs Git

Globalement, git config est un outil d'aide qui fournit un raccourci pour l'édition des fichiers git config bruts sur le disque. Nous avons couvert les options de personnalisation. Une compréhension basique des options de configuration Git est nécessaire pour configurer un dépôt. Reportez-vous à notre guide pour une démonstration des bases.
 

Prêt à découvrir Git ?

Essayez ce tutoriel interactif.

Démarrez maintenant