Git config files
Git uses per-user ~/.gitconfig, per-repository .git/config configuration files, and environment variables to customize Git behavior. The system gitconfig file is not covered here. A common pattern is a developer makes most of their settings in the per-user Git config file, occasionally overriding them in the per-repository config file.
We have several articles on Git configuration, leading to a per-user Git config file with sections like:
pull HTTPS for speed, push SSH for security
[url "ssh://github.com/"]
pushInsteadOf = https://github.com/
[url "ssh://gitlab.com/"]
pushInsteadOf = https://gitlab.com/
[url "ssh://gist.github.com/"]
pushInsteadOf = https://gist.github.com/scivision/
[url "ssh://gitlab.kitware.com/"]
pushInsteadOf = https://gitlab.kitware.com/[diff]
tool = meld
[merge]
tool = meldMaintain linear Git history with fast-forward only by default with
pull.ff only
[pull]
ff = onlyCheck upon “git push” if all Git submodules have first been “git push” before the consuming repository, to avoid broken builds for others with
push.recurseSubmodules check
[push]
recurseSubmodules = checkFor any Git operation (except “git clone”) that changs references to Git submodules commit hashes, automatically update the Git submodules to match the new commit hashes with option
submodules.recurse true
[submodule]
recurse = true