I have two related questions:
- How can I determine precisely which config file is being used by my Git bash client?
- Can I override settings in the config file being used?
I know that there is a system, global and local (aka project) .gitconfig
file. And, according to the Git site, each of these "levels" (system, global, local) overwrites values in the previous level, so values in the ./git/config
(local) trump those in /etc/gitconfig
, for instance.
In other words we are dealing with a hierarchy and any declaration in the local config file will take precedence over one in the global or system config file.
But, if a setting is present in say the global file (say proxy) and not present in the local file does that setting then use the proxy setting from global? That would mean that Git works with all the settings in all the config files before applying the hierarchy rule.
And then, in the example above, if the proxy setting from global is being used together with the other settings in my local config file how can I override it?
How can I determine precisely which gitconfig file is being used by my Git bash client ?
You can use the --show-origin
option
git config --list --show-origin
This will show the file from which each setting's value was taken.
Can I override settings in the Git config file being used ?
You can override settings from lower-precedence sources by putting the value you want to use instead in a higher-precedence source.
I've read your example, and I'm really not sure I get the question. If the proxy setting is in your global file, then as you already pointed out yourself you can override it by putting a value in the local file.
That would mean that Git works with all the settings in all the config files before applying the hierarchy rule.
Yes. The results are additive. Settings in each level are merged with the settings in the previous level. When both levels specify the same setting, the lower more specific setting overwrites the less specific one.
as git configuration documentation clearly states:
The .git/config file in each repository is used to store the configuration for that repository, and $HOME/.gitconfig is used to store a per-user configuration as fallback values for the .git/config file. The file /etc/gitconfig can be used to store a system-wide default configuration.
As for your second question,
And then, in the example above, if the proxy setting from global is being used together with the other settings in my local config file how can I override it?
Provide a more specific setting in the local config for the project.
来源:https://stackoverflow.com/questions/42786658/how-to-find-out-which-git-config-file-is-used-and-how-to-override-settings