43

If I set configuration on my ~/.gitconfig file, which config would override it?

  • project level config : .git/config
  • system level config : /etc/gitconfig
ivanleoncz
  • 9,070
  • 7
  • 57
  • 49
djangofan
  • 28,471
  • 61
  • 196
  • 289

2 Answers2

74

Lowest to highest priority:

  • /etc/gitconfig: system wide, edited when --system parameter is used
  • ~/.gitconfig: user specific configuration, edited when --global parameter is used
  • .git/config: repository specific configuration
Michael Kohl
  • 66,324
  • 14
  • 138
  • 158
  • 2
    where is the system wide file on a Windows system? – djangofan Nov 09 '14 at 03:21
  • 5
    Google says `C:\Program Files\Git\etc\gitconfig`, I'll have to take its word for it. – Michael Kohl Nov 09 '14 at 14:26
  • Yep. Thanks. That is basically the location: `C:\Program Files (x86)\Git\etc\gitconfig` . I was really wondering about where that file was. – djangofan Nov 09 '14 at 17:24
  • 5
    Thanks for digesting the manual and giving it to me in a monday morning format :) – Brian Sep 14 '15 at 12:25
  • In my configs, repository configs doesn't working for proxy. When I use git config http.proxy, git can't access server behind proxy. But when I use git config --global http.proxy it works. But I want repo specific proxy settings. Why it acting like this, what do you think? – Erlan Jan 12 '16 at 11:18
  • @Erlan I think it's a global setting. You can try setting the HTTP_PROXY (or HTTPS_PROXY) environment variable before the pull to see if that helps. – Michael Kohl Jan 12 '16 at 13:31
  • 1
    I'm always confused about whether `/usr/local/etc/gitconfig` is used (that is to say, `/etc/gitconfig/` or just `/etc/gitconfig`, for system. – Steven Lu Mar 01 '18 at 23:06
  • @StevenLu For **macOS** is `/usr/local/git/etc/gitconfig` , for **Linux** `/etc/gitconfig` and for **Windows** is `/etc/gitconfig` – Manuel Jordan Dec 14 '22 at 19:37
24

From the Git manual (read http://git-scm.com/docs/git-config#FILES)

If not set explicitly with --file, there are four files where git config will search for configuration options:

$(prefix)/etc/gitconfig

System-wide configuration file.

$XDG_CONFIG_HOME/git/config

Second user-specific configuration file. If $XDG_CONFIG_HOME is not set or empty, $HOME/.config/git/config will be used. Any single-valued variable set in this file will be overwritten by whatever is in ~/.gitconfig. It is a good idea not to create this file if you sometimes use older versions of Git, as support for this file was added fairly recently.

~/.gitconfig

User-specific configuration file. Also called "global" configuration file.

$GIT_DIR/config

Repository specific configuration file.

If no further options are given, all reading options will read all of these files that are available. If the global or the system-wide configuration file are not available they will be ignored. If the repository configuration file is not available or readable, git config will exit with a non-zero error code. However, in neither case will an error message be issued.

The files are read in the order given above, with last value found taking precedence over values read earlier. When multiple values are taken then all values of a key from all files will be used.

Community
  • 1
  • 1
Michael
  • 10,124
  • 1
  • 34
  • 49