Outils pour utilisateurs

Outils du site


informatique:git:configuration

Configuration

Il est possible de modifier les préférences en utilisant soit git directement soit en modifiant son fichier de configuration.

En ligne de commande

git config --global user.name "Nom et prénom de l'utilisateur" # Nom de l'utilisateur
git config --global user.email "Adresse email de l'utilisateur" # Adresse email de l'utilisateur
git config --global color.ui "auto" # Colorisation des résultats
git config --global core.editor vim # Choix de l'éditeur par défaut
git config --global help.autocorrect 1 # Auto-correction des commandes
git config --global core.autocrlf false # Non conversion du caractère de fin de ligne
git config --global commit.template <filename> # Utilisation d'un modèle de message pour la validation
git config --global alias.st 'status' # Création d'un alias de la fonction "status"
git config --global push.autoSetupRemote true # Création automatique de la branche distante au moment du partage (commande "push")

Pour supprimer un élément de la configuration, il suffit d'ajouter l'option --unset lors de l'utilisation de la commande. Par exemple :

git config --global --unset user.name

En utilisant --global, la configuration s'applique à l'utilisateur courant. Il est possible de changer ce comportement en utilisant d'autres options :

  • Avec --system, la configuration s'applique à tous les utilisateurs de la machine.
  • Avec --local, la configuration s'applique au dépôt courant. Dans ce cas, il faut bien sur se trouver dans un répertoire géré par git.

Avec un fichier de configuration

Le fichier a modifier est le fichier .gitconfig à la racine du répertoire de l'utilisateur. Il est généré automatiquement lors de l'utilisation des commandes de configuration.

[user]
        email = Adresse email de l'utilisateur
        name = Nom et prénom de l'utilisateur
[core]
        editor = vim 
        autocrlf = false
[color]
        ui = auto
[help]
        autocorrect = 1
[alias]
        st = status
[commit]
        template = <filename>
[push]
        autoSetupRemote = true

Pour supprimer un élément de la configuration, il suffit de l'enlever du fichier de configuration.

En modifiant le fichier .gitconfig, la configuration s'applique à l'utilisateur courant. Il est possible de changer ce comportement en modifiant d'autres fichiers :

  • En modifiant le fichier /etc/gitconfig, la configuration s'applique à tous les utilisateurs de la machine.
  • En modifiant le fichier .git/config, la configuration s'applique au dépôt courant. Dans ce cas, il faut bien sur se trouver dans un répertoire géré par git.

Lorsque l'autocorrection des commandes est activée, git essaye de trouver une correspondance dans les commandes existantes. S'il existe plusieurs possibilités, elles seront affichées à l'utilisateur. S'il n'existe qu'une seule possibilité, elle sera exécutée automatiquement.

Lorsqu'un fichier modèle de message est utilisé pour la validation, celui-ci est affiché à chaque validation. Les lignes de commentaires 1) ne seront pas utilisées lors de la validation. Cela permet de :

  • donner des indications sur ce que doit contenir le message de validation,
  • faciliter la rédaction du message de validation en y intégrant les données obligatoires automatiquement.

Des alias pour gagner du temps

En plus de raccourcir certaines commandes, les alias permettent aussi de combiner des actions répétitives en une seule commande. Voici les alias que j'utilise actuellement.

.gitconfig
[alias]
        ; List aliases
        alias = !git config --get-regexp '^alias\\.' | sed --expression s/^alias\\.// --expression s/\\ /\\\\t\\ / | sort
        ; Amend content to the last commit
	amend = commit --amend --no-edit
        ; Check for whitespace errors
        check = diff --check HEAD
        ; Fixup a commit into another
        fixup = !sh -c 'git stash --keep-index && SHA=$(git rev-parse $1) && git commit --fixup $SHA && GIT_SEQUENCE_EDITOR=: git rebase --interactive --autosquash $SHA~ && git stash pop' -
        ; Show file names in commits
        list-file = !sh -c 'git diff-tree --no-commit-id --name-only -r ${1:-HEAD}' -
	; Show branches ordered by last working time
	last-work = branch --sort='-committerdate' --format='%(color:green)%(committerdate:relative)%(color:reset) %(refname:short)' --color=always
        ; Retrieve a MR locally (gitlab)
        mr = !sh -c 'git fetch ${2:-origin} merge-requests/$1/head:mr/$1 && git checkout mr/$1' -
        ; Show log on oneline
        oneline = log --oneline --abbrev-commit --graph
        ; Retrieve a PR locally (github)
        pr = !sh -c 'git fetch ${2:-origin} pull/$1/head:pr/$1 && git checkout pr/$1' -
        ; Prune local tags that don't exist on remote
        pt = !git tag -l | xargs git tag -d && git fetch -t
        ; Remove local MRs (gitlab)
        rmmr = !git reset --hard && git checkout master && git branch --list 'mr/*' --format '%(refname:lstrip=2)' | xargs git branch -D
        ; Show synchronized branches without remote
        stale-branch = !git fetch --all --prune && git branch --verbose | awk '/\\[gone\\]/ {print $1}'

La commande :, utilisée comme éditeur dans la variable GIT_SEQUENCE_EDITOR, fait partie des commandes incluses dans Bash. Voir ici pour plus d'informations.

Attention, la version de sed disponible sur MacOS ne supporte pas l'option –expression. Il faut la remplacer par l'option -e, le reste étant conservé à l'identique.

Prompt personnalisé

Vérifier ce que j'ai fait à la maison

export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWSTASHSTATE=1
export GIT_PS1_SHOWUNTRACKEDFILES=1
export GIT_PS1_SHOWUPSTREAM=verbose
export GIT_PS1_DESCRIBE_STYLE=branch
export GIT_PS1_SHOWCOLORHINTS=1
export PROMPT_COMMAND='__git_ps1 "\[\033[1;32m\]\u@\h:\[\033[1;34m\]\w\[\033[1;m\]" " \\\$ "'
1)
Les lignes qui commencent par #
informatique/git/configuration.txt · Dernière modification : 2024/12/03 07:17 de alexis