#
Il est possible de modifier les préférences en utilisant soit git directement soit en modifiant son fichier de configuration.
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 :
--system
, la configuration s'applique à tous les utilisateurs de la machine.--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.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 :
/etc/gitconfig
, la configuration s'applique à tous les utilisateurs de la machine..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 :
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.
[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.
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\]" " \\\$ "'
#