Couches de configuration
Git lit la config depuis plusieurs fichiers dans l'ordre : système, global (~/.gitconfig), local (.git/config), worktree (quand activé) et ligne de commande (-c). Les couches plus tardives écrasent les antérieures.
Includes conditionnels
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig.work
[includeIf "gitdir:~/personal/"]
path = ~/.gitconfig.personal
[includeIf "onbranch:release/*"]
path = ~/.gitconfig.release
[includeIf "hasconfig:remote.*.url:[email protected]:work-org/**"]
path = ~/.gitconfig.work
Aliases qui composent
[alias]
co = checkout
cm = commit -v
st = status -sb
lg = log --graph --pretty=format:'%C(auto)%h %ad %s %d' --date=short
last = log -1 HEAD --stat
unstage = reset HEAD --
sync = "!f() { git fetch --all --prune && git rebase --autostash @{u}; }; f"
publish = "!git push -u origin $(git symbolic-ref --short HEAD)"
Réécriture d'URL
[url "[email protected]:"]
insteadOf = https://github.com/
[url "https://github.com/"]
pushInsteadOf = [email protected]:
Config par worktree
git config extensions.worktreeConfig true
git config --worktree user.email [email protected]
Defaults sensés
[core]
autocrlf = input
fsmonitor = true
untrackedCache = true
[merge]
conflictStyle = zdiff3
ff = false
[pull]
rebase = true
[rebase]
autoSquash = true
autoStash = true
updateRefs = true
[push]
autoSetupRemote = true
default = current
[fetch]
prune = true
parallel = 0
[diff]
algorithm = histogram
colorMoved = default
submodule = log
[init]
defaultBranch = main
[advice]
detachedHead = false
[feature]
manyFiles = true
Inspection
git config --list --show-origin
git config --get-all alias.lg
git config --show-scope user.email
git -c user.email=other@x commit -m "identité ad-hoc"
Erreurs courantes
Définir des credentials dans des fichiers commités. Mélanger pull.rebase=true avec des workflows qui s'attendent à des merges.