Git config: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Internal=
=Internal=
* [[Git_Commands#Configuration_Commands|Git Commands]]
* [[Git_Commands#Configuration_Commands|Git Commands]]
* [[Git Configuration]]
* [[Git Configuration]]
* [[Git Configuration Options]]
* [[.gitignore]]
* [[.gitignore]]


=Overview=
=Overview=
 
<code>git config</code> is used to read and manipulate entries in the [[Git_Configuration#Overview|Git configuration files]].
<code>git config</code> is used to read and manipulate entries in the Git configuration files. <code>git config --get</code> is a reliable source of information about the repository, such as the remote origins URLs. There are three levels of configuration files, listed below from the highest precedence to the lowest:
 
1. '''file''' (<code>.git/config</code>). This file contains repository-specific configuration and has the highest precedence. Repository-specific configuration is manipulated when <code>git config</code> gets the <code>--local</code> option. This is the default.
 
2. '''global''' (<code>~/.gitconfig</code>). This file contains user-specific configuration and it is manipulated when <code>git config</code> gets the <code>--global</code> option.
 
3. '''system''' (<code>/etc/gitconfig</code>). This file contains system-wide configuration and can be manipulated with the <code>--system</code> option, if the user has proper permissions.
 
The configuration files are not replicated during [[git clone]].


More info:
More info:
 
<syntaxhighlight lang='bash'>
git config --help
git config --help
</syntaxhighlight>


=Configuration Operations=
=Configuration Operations=
==List the Configuration==
==List the Configuration==
 
<syntaxhighlight lang='bash'>
git config [--system|--global|--local] -l
git config [--system|--global|--local] -l
 
</syntaxhighlight>
===List the Remote Origin URL===
===List the Remote Origin URL===
<syntaxhighlight lang='bash'>
<syntaxhighlight lang='bash'>
git config --get remote.<origin-name>.url
git config --get remote.<origin-name>.url
Line 36: Line 24:


==Configure a Setting==
==Configure a Setting==
<syntaxhighlight lang='bash'>
git config [--system|--global|--file] <some.git.option> <value>
</syntaxhighlight>


<font size=-1>
<syntaxhighlight lang='bash'>
git config [--system|--global|--file] <''some.git.option''> <''value''>
git config --global push.autoSetupRemote true
</font>
</syntaxhighlight>
 
<font size=-1>
git config --global push.autoSetupRemote true
</font>


==Get a Setting==
==Get a Setting==
 
<syntaxhighlight lang='bash'>
git config --get <''option-name''>
git config --get <some.git.option.name>
 
</syntaxhighlight>
==Remove a Setting==
==Remove a Setting==
 
<syntaxhighlight lang='bash'>
git config --unset [--file|--global|--system] <''some.git.option''>
git config --unset [--file|--global|--system] <some.git.option>
 
</syntaxhighlight>
==Remote Manipulation==
==Remote Manipulation==
See: {{Internal|Git_Concepts#Remote|Remotes}}
See: {{Internal|Git_Concepts#Remote|Remotes}}


==Recipes==
=Recipes=
 
==Configure the Commit Author==
===Configure the Commit Author===
 
This command configures the current repository only (<code>--local</code> is implied by default):
This command configures the current repository only (<code>--local</code> is implied by default):


<syntaxhighlight lang='bash'>
<syntaxhighlight lang='bash'>
git config user.name "Ovidiu Feodorov"
git config user.name "Ovidiu Feodorov"
git config user.email "ovidiu@feodorov.com"
git config user.email "ovidiu@example.com"
</syntaxhighlight>
</syntaxhighlight>


The configuration propagates to [[.git/config#.5Buser.5D|.git/config [user] section]].
The configuration propagates to <code>[[.git/config#.5Buser.5D|.git/config [user]]]</code> section.


The same effect can be achieved by setting [[Git_Environment_Variables#GIT_AUTHOR_NAME|GIT_AUTHOR_NAME]] and [[Git_Environment_Variables#GIT_AUTHOR_EMAIL|GIT_AUTHOR_EMAIL]] environment variables.
The same effect can be achieved by setting <code>[[Git_Environment_Variables#GIT_AUTHOR_NAME|GIT_AUTHOR_NAME]]</code> and <code>[[Git_Environment_Variables#GIT_AUTHOR_EMAIL|GIT_AUTHOR_EMAIL]]</code> environment variables.


To configure commit author information for all repositories the user interacts with, use <code>--global</code>. If set on a specific repository, the repository-specific setting will take precedence. For more details on configuration hierarchy, see [[Git_Configuration#Overview|Git Configuration]].
To configure commit author information for all repositories the user interacts with, use <code>--global</code>. If set on a specific repository, the repository-specific setting will take precedence. For more details on configuration hierarchy, see [[Git_Configuration#Overview|Git Configuration]].
Line 76: Line 60:
<syntaxhighlight lang='bash'>
<syntaxhighlight lang='bash'>
git config --global user.name "Ovidiu Feodorov"
git config --global user.name "Ovidiu Feodorov"
git config --global user.email "ovidiu@feodorov.com"
git config --global user.email "ovidiu@example.com"
</syntaxhighlight>
</syntaxhighlight>


===Configure an Alias===
==Configure an Alias==
<syntaxhighlight lang='bash'>
<syntaxhighlight lang='bash'>
git config --global alias.show-graph 'log --graph --abbrev-commit --pretty=oneline'
git config --global alias.show-graph 'log --graph --abbrev-commit --pretty=oneline'
</syntaxhighlight>
</syntaxhighlight>


===<span id='http.sslVerify'></span>Turn Off SSL Server Certificate Verification for a Specific Repository===
==<span id='http.sslVerify'></span>Turn Off SSL Server Certificate Verification for a Specific Repository==


The setting is controlled by http.sslVerify configuration element:
The setting is controlled by <code>http.sslVerify</code> configuration element:
 
<syntaxhighlight lang='bash'>
cd <''repository-dir''>
cd <repository_dir>
git config http.sslVerify true|false
git config http.sslVerify true|false
 
</syntaxhighlight>
and ends up in modifying .git/config's [[.git/config#.5Bhttp.5D|[http]]] section as follows:
and ends up in modifying <code>.git/config</code>'s <code>[[.git/config#.5Bhttp.5D|[http]]]</code> section as follows:
 
<syntaxhighlight lang='ini'>
[http]
[http]
        sslVerify = true|false
    sslVerify = true|false
 
</syntaxhighlight>
The configuration setting is overridden by the [[Git_Environment_Variables#GIT_SSL_NO_VERIFY|GIT_SSL_NO_VERIFY]] environment variable.
The configuration setting is overridden by the <code>[[Git_Environment_Variables#GIT_SSL_NO_VERIFY|GIT_SSL_NO_VERIFY]]</code> environment variable.
==<span id='Configure_url'></span>Configure and Read <tt>[url]</tt> <tt>insteadOf</tt>==
To read:
<syntaxhighlight lang='bash'>
git config --get url."git@github.com:someorg/somerepo".insteadof
</syntaxhighlight>
To configure:
<syntaxhighlight lang='bash'>
git config --global url."git@github.com:someorg/somerepo".insteadof "https://github.com/someorg/somerepo"
</syntaxhighlight>
Also see: {{Internal|Git_Configuration#insteadOf|Git Configuration <tt>url</tt> <tt>insteadOf</tt>}}

Latest revision as of 23:21, 9 January 2024

Internal

Overview

git config is used to read and manipulate entries in the Git configuration files.

More info:

git config --help

Configuration Operations

List the Configuration

git config [--system|--global|--local] -l

List the Remote Origin URL

git config --get remote.<origin-name>.url
git config --get remote.origin.url

Configure a Setting

git config [--system|--global|--file] <some.git.option> <value>
git config --global push.autoSetupRemote true

Get a Setting

git config --get <some.git.option.name>

Remove a Setting

git config --unset [--file|--global|--system] <some.git.option>

Remote Manipulation

See:

Remotes

Recipes

Configure the Commit Author

This command configures the current repository only (--local is implied by default):

git config user.name "Ovidiu Feodorov"
git config user.email "ovidiu@example.com"

The configuration propagates to .git/config [user] section.

The same effect can be achieved by setting GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL environment variables.

To configure commit author information for all repositories the user interacts with, use --global. If set on a specific repository, the repository-specific setting will take precedence. For more details on configuration hierarchy, see Git Configuration.

git config --global user.name "Ovidiu Feodorov"
git config --global user.email "ovidiu@example.com"

Configure an Alias

git config --global alias.show-graph 'log --graph --abbrev-commit --pretty=oneline'

Turn Off SSL Server Certificate Verification for a Specific Repository

The setting is controlled by http.sslVerify configuration element:

cd <repository_dir>
git config http.sslVerify true|false

and ends up in modifying .git/config's [http] section as follows:

[http]
     sslVerify = true|false

The configuration setting is overridden by the GIT_SSL_NO_VERIFY environment variable.

Configure and Read [url] insteadOf

To read:

git config --get url."git@github.com:someorg/somerepo".insteadof

To configure:

git config --global url."git@github.com:someorg/somerepo".insteadof "https://github.com/someorg/somerepo"

Also see:

Git Configuration url insteadOf