431 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			431 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Plaintext
		
	
	
| git-config(1)
 | |
| =============
 | |
| 
 | |
| NAME
 | |
| ----
 | |
| git-config - Get and set repository or global options
 | |
| 
 | |
| 
 | |
| SYNOPSIS
 | |
| --------
 | |
| [verse]
 | |
| 'git config' [<file-option>] [type] [--show-origin] [-z|--null] name [value [value_regex]]
 | |
| 'git config' [<file-option>] [type] --add name value
 | |
| 'git config' [<file-option>] [type] --replace-all name value [value_regex]
 | |
| 'git config' [<file-option>] [type] [--show-origin] [-z|--null] --get name [value_regex]
 | |
| 'git config' [<file-option>] [type] [--show-origin] [-z|--null] --get-all name [value_regex]
 | |
| 'git config' [<file-option>] [type] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
 | |
| 'git config' [<file-option>] [type] [-z|--null] --get-urlmatch name URL
 | |
| 'git config' [<file-option>] --unset name [value_regex]
 | |
| 'git config' [<file-option>] --unset-all name [value_regex]
 | |
| 'git config' [<file-option>] --rename-section old_name new_name
 | |
| 'git config' [<file-option>] --remove-section name
 | |
| 'git config' [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list
 | |
| 'git config' [<file-option>] --get-color name [default]
 | |
| 'git config' [<file-option>] --get-colorbool name [stdout-is-tty]
 | |
| 'git config' [<file-option>] -e | --edit
 | |
| 
 | |
| DESCRIPTION
 | |
| -----------
 | |
| You can query/set/replace/unset options with this command. The name is
 | |
| actually the section and the key separated by a dot, and the value will be
 | |
| escaped.
 | |
| 
 | |
| Multiple lines can be added to an option by using the `--add` option.
 | |
| If you want to update or unset an option which can occur on multiple
 | |
| lines, a POSIX regexp `value_regex` needs to be given.  Only the
 | |
| existing values that match the regexp are updated or unset.  If
 | |
| you want to handle the lines that do *not* match the regex, just
 | |
| prepend a single exclamation mark in front (see also <<EXAMPLES>>).
 | |
| 
 | |
| The type specifier can be either `--int` or `--bool`, to make
 | |
| 'git config' ensure that the variable(s) are of the given type and
 | |
| convert the value to the canonical form (simple decimal number for int,
 | |
| a "true" or "false" string for bool), or `--path`, which does some
 | |
| path expansion (see `--path` below).  If no type specifier is passed, no
 | |
| checks or transformations are performed on the value.
 | |
| 
 | |
| When reading, the values are read from the system, global and
 | |
| repository local configuration files by default, and options
 | |
| `--system`, `--global`, `--local` and `--file <filename>` can be
 | |
| used to tell the command to read from only that location (see <<FILES>>).
 | |
| 
 | |
| When writing, the new value is written to the repository local
 | |
| configuration file by default, and options `--system`, `--global`,
 | |
| `--file <filename>` can be used to tell the command to write to
 | |
| that location (you can say `--local` but that is the default).
 | |
| 
 | |
| This command will fail with non-zero status upon error.  Some exit
 | |
| codes are:
 | |
| 
 | |
| - The section or key is invalid (ret=1),
 | |
| - no section or name was provided (ret=2),
 | |
| - the config file is invalid (ret=3),
 | |
| - the config file cannot be written (ret=4),
 | |
| - you try to unset an option which does not exist (ret=5),
 | |
| - you try to unset/set an option for which multiple lines match (ret=5), or
 | |
| - you try to use an invalid regexp (ret=6).
 | |
| 
 | |
| On success, the command returns the exit code 0.
 | |
| 
 | |
| OPTIONS
 | |
| -------
 | |
| 
 | |
| --replace-all::
 | |
| 	Default behavior is to replace at most one line. This replaces
 | |
| 	all lines matching the key (and optionally the value_regex).
 | |
| 
 | |
| --add::
 | |
| 	Adds a new line to the option without altering any existing
 | |
| 	values.  This is the same as providing '^$' as the value_regex
 | |
| 	in `--replace-all`.
 | |
| 
 | |
| --get::
 | |
| 	Get the value for a given key (optionally filtered by a regex
 | |
| 	matching the value). Returns error code 1 if the key was not
 | |
| 	found and the last value if multiple key values were found.
 | |
| 
 | |
| --get-all::
 | |
| 	Like get, but returns all values for a multi-valued key.
 | |
| 
 | |
| --get-regexp::
 | |
| 	Like --get-all, but interprets the name as a regular expression and
 | |
| 	writes out the key names.  Regular expression matching is currently
 | |
| 	case-sensitive and done against a canonicalized version of the key
 | |
| 	in which section and variable names are lowercased, but subsection
 | |
| 	names are not.
 | |
| 
 | |
| --get-urlmatch name URL::
 | |
| 	When given a two-part name section.key, the value for
 | |
| 	section.<url>.key whose <url> part matches the best to the
 | |
| 	given URL is returned (if no such key exists, the value for
 | |
| 	section.key is used as a fallback).  When given just the
 | |
| 	section as name, do so for all the keys in the section and
 | |
| 	list them.  Returns error code 1 if no value is found.
 | |
| 
 | |
| --global::
 | |
| 	For writing options: write to global `~/.gitconfig` file
 | |
| 	rather than the repository `.git/config`, write to
 | |
| 	`$XDG_CONFIG_HOME/git/config` file if this file exists and the
 | |
| 	`~/.gitconfig` file doesn't.
 | |
| +
 | |
| For reading options: read only from global `~/.gitconfig` and from
 | |
| `$XDG_CONFIG_HOME/git/config` rather than from all available files.
 | |
| +
 | |
| See also <<FILES>>.
 | |
| 
 | |
| --system::
 | |
| 	For writing options: write to system-wide
 | |
| 	`$(prefix)/etc/gitconfig` rather than the repository
 | |
| 	`.git/config`.
 | |
| +
 | |
| For reading options: read only from system-wide `$(prefix)/etc/gitconfig`
 | |
| rather than from all available files.
 | |
| +
 | |
| See also <<FILES>>.
 | |
| 
 | |
| --local::
 | |
| 	For writing options: write to the repository `.git/config` file.
 | |
| 	This is	the default behavior.
 | |
| +
 | |
| For reading options: read only from the repository `.git/config` rather than
 | |
| from all available files.
 | |
| +
 | |
| See also <<FILES>>.
 | |
| 
 | |
| -f config-file::
 | |
| --file config-file::
 | |
| 	Use the given config file instead of the one specified by GIT_CONFIG.
 | |
| 
 | |
| --blob blob::
 | |
| 	Similar to `--file` but use the given blob instead of a file. E.g.
 | |
| 	you can use 'master:.gitmodules' to read values from the file
 | |
| 	'.gitmodules' in the master branch. See "SPECIFYING REVISIONS"
 | |
| 	section in linkgit:gitrevisions[7] for a more complete list of
 | |
| 	ways to spell blob names.
 | |
| 
 | |
| --remove-section::
 | |
| 	Remove the given section from the configuration file.
 | |
| 
 | |
| --rename-section::
 | |
| 	Rename the given section to a new name.
 | |
| 
 | |
| --unset::
 | |
| 	Remove the line matching the key from config file.
 | |
| 
 | |
| --unset-all::
 | |
| 	Remove all lines matching the key from config file.
 | |
| 
 | |
| -l::
 | |
| --list::
 | |
| 	List all variables set in config file, along with their values.
 | |
| 
 | |
| --bool::
 | |
| 	'git config' will ensure that the output is "true" or "false"
 | |
| 
 | |
| --int::
 | |
| 	'git config' will ensure that the output is a simple
 | |
| 	decimal number.  An optional value suffix of 'k', 'm', or 'g'
 | |
| 	in the config file will cause the value to be multiplied
 | |
| 	by 1024, 1048576, or 1073741824 prior to output.
 | |
| 
 | |
| --bool-or-int::
 | |
| 	'git config' will ensure that the output matches the format of
 | |
| 	either --bool or --int, as described above.
 | |
| 
 | |
| --path::
 | |
| 	'git-config' will expand leading '{tilde}' to the value of
 | |
| 	'$HOME', and '{tilde}user' to the home directory for the
 | |
| 	specified user.  This option has no effect when setting the
 | |
| 	value (but you can use 'git config bla {tilde}/' from the
 | |
| 	command line to let your shell do the expansion).
 | |
| 
 | |
| -z::
 | |
| --null::
 | |
| 	For all options that output values and/or keys, always
 | |
| 	end values with the null character (instead of a
 | |
| 	newline). Use newline instead as a delimiter between
 | |
| 	key and value. This allows for secure parsing of the
 | |
| 	output without getting confused e.g. by values that
 | |
| 	contain line breaks.
 | |
| 
 | |
| --name-only::
 | |
| 	Output only the names of config variables for `--list` or
 | |
| 	`--get-regexp`.
 | |
| 
 | |
| --show-origin::
 | |
| 	Augment the output of all queried config options with the
 | |
| 	origin type (file, standard input, blob, command line) and
 | |
| 	the actual origin (config file path, ref, or blob id if
 | |
| 	applicable).
 | |
| 
 | |
| --get-colorbool name [stdout-is-tty]::
 | |
| 
 | |
| 	Find the color setting for `name` (e.g. `color.diff`) and output
 | |
| 	"true" or "false".  `stdout-is-tty` should be either "true" or
 | |
| 	"false", and is taken into account when configuration says
 | |
| 	"auto".  If `stdout-is-tty` is missing, then checks the standard
 | |
| 	output of the command itself, and exits with status 0 if color
 | |
| 	is to be used, or exits with status 1 otherwise.
 | |
| 	When the color setting for `name` is undefined, the command uses
 | |
| 	`color.ui` as fallback.
 | |
| 
 | |
| --get-color name [default]::
 | |
| 
 | |
| 	Find the color configured for `name` (e.g. `color.diff.new`) and
 | |
| 	output it as the ANSI color escape sequence to the standard
 | |
| 	output.  The optional `default` parameter is used instead, if
 | |
| 	there is no color configured for `name`.
 | |
| 
 | |
| -e::
 | |
| --edit::
 | |
| 	Opens an editor to modify the specified config file; either
 | |
| 	`--system`, `--global`, or repository (default).
 | |
| 
 | |
| --[no-]includes::
 | |
| 	Respect `include.*` directives in config files when looking up
 | |
| 	values. Defaults to `off` when a specific file is given (e.g.,
 | |
| 	using `--file`, `--global`, etc) and `on` when searching all
 | |
| 	config files.
 | |
| 
 | |
| [[FILES]]
 | |
| 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.
 | |
| 
 | |
| You may override individual configuration parameters when running any git
 | |
| command by using the `-c` option. See linkgit:git[1] for details.
 | |
| 
 | |
| All writing options will per default write to the repository specific
 | |
| configuration file. Note that this also affects options like `--replace-all`
 | |
| and `--unset`. *'git config' will only ever change one file at a time*.
 | |
| 
 | |
| You can override these rules either by command-line options or by environment
 | |
| variables. The `--global` and the `--system` options will limit the file used
 | |
| to the global or system-wide file respectively. The `GIT_CONFIG` environment
 | |
| variable has a similar effect, but you can specify any filename you want.
 | |
| 
 | |
| 
 | |
| ENVIRONMENT
 | |
| -----------
 | |
| 
 | |
| GIT_CONFIG::
 | |
| 	Take the configuration from the given file instead of .git/config.
 | |
| 	Using the "--global" option forces this to ~/.gitconfig. Using the
 | |
| 	"--system" option forces this to $(prefix)/etc/gitconfig.
 | |
| 
 | |
| GIT_CONFIG_NOSYSTEM::
 | |
| 	Whether to skip reading settings from the system-wide
 | |
| 	$(prefix)/etc/gitconfig file. See linkgit:git[1] for details.
 | |
| 
 | |
| See also <<FILES>>.
 | |
| 
 | |
| 
 | |
| [[EXAMPLES]]
 | |
| EXAMPLES
 | |
| --------
 | |
| 
 | |
| Given a .git/config like this:
 | |
| 
 | |
| 	#
 | |
| 	# This is the config file, and
 | |
| 	# a '#' or ';' character indicates
 | |
| 	# a comment
 | |
| 	#
 | |
| 
 | |
| 	; core variables
 | |
| 	[core]
 | |
| 		; Don't trust file modes
 | |
| 		filemode = false
 | |
| 
 | |
| 	; Our diff algorithm
 | |
| 	[diff]
 | |
| 		external = /usr/local/bin/diff-wrapper
 | |
| 		renames = true
 | |
| 
 | |
| 	; Proxy settings
 | |
| 	[core]
 | |
| 		gitproxy=proxy-command for kernel.org
 | |
| 		gitproxy=default-proxy ; for all the rest
 | |
| 
 | |
| 	; HTTP
 | |
| 	[http]
 | |
| 		sslVerify
 | |
| 	[http "https://weak.example.com"]
 | |
| 		sslVerify = false
 | |
| 		cookieFile = /tmp/cookie.txt
 | |
| 
 | |
| you can set the filemode to true with
 | |
| 
 | |
| ------------
 | |
| % git config core.filemode true
 | |
| ------------
 | |
| 
 | |
| The hypothetical proxy command entries actually have a postfix to discern
 | |
| what URL they apply to. Here is how to change the entry for kernel.org
 | |
| to "ssh".
 | |
| 
 | |
| ------------
 | |
| % git config core.gitproxy '"ssh" for kernel.org' 'for kernel.org$'
 | |
| ------------
 | |
| 
 | |
| This makes sure that only the key/value pair for kernel.org is replaced.
 | |
| 
 | |
| To delete the entry for renames, do
 | |
| 
 | |
| ------------
 | |
| % git config --unset diff.renames
 | |
| ------------
 | |
| 
 | |
| If you want to delete an entry for a multivar (like core.gitproxy above),
 | |
| you have to provide a regex matching the value of exactly one line.
 | |
| 
 | |
| To query the value for a given key, do
 | |
| 
 | |
| ------------
 | |
| % git config --get core.filemode
 | |
| ------------
 | |
| 
 | |
| or
 | |
| 
 | |
| ------------
 | |
| % git config core.filemode
 | |
| ------------
 | |
| 
 | |
| or, to query a multivar:
 | |
| 
 | |
| ------------
 | |
| % git config --get core.gitproxy "for kernel.org$"
 | |
| ------------
 | |
| 
 | |
| If you want to know all the values for a multivar, do:
 | |
| 
 | |
| ------------
 | |
| % git config --get-all core.gitproxy
 | |
| ------------
 | |
| 
 | |
| If you like to live dangerously, you can replace *all* core.gitproxy by a
 | |
| new one with
 | |
| 
 | |
| ------------
 | |
| % git config --replace-all core.gitproxy ssh
 | |
| ------------
 | |
| 
 | |
| However, if you really only want to replace the line for the default proxy,
 | |
| i.e. the one without a "for ..." postfix, do something like this:
 | |
| 
 | |
| ------------
 | |
| % git config core.gitproxy ssh '! for '
 | |
| ------------
 | |
| 
 | |
| To actually match only values with an exclamation mark, you have to
 | |
| 
 | |
| ------------
 | |
| % git config section.key value '[!]'
 | |
| ------------
 | |
| 
 | |
| To add a new proxy, without altering any of the existing ones, use
 | |
| 
 | |
| ------------
 | |
| % git config --add core.gitproxy '"proxy-command" for example.com'
 | |
| ------------
 | |
| 
 | |
| An example to use customized color from the configuration in your
 | |
| script:
 | |
| 
 | |
| ------------
 | |
| #!/bin/sh
 | |
| WS=$(git config --get-color color.diff.whitespace "blue reverse")
 | |
| RESET=$(git config --get-color "" "reset")
 | |
| echo "${WS}your whitespace color or blue reverse${RESET}"
 | |
| ------------
 | |
| 
 | |
| For URLs in `https://weak.example.com`, `http.sslVerify` is set to
 | |
| false, while it is set to `true` for all others:
 | |
| 
 | |
| ------------
 | |
| % git config --bool --get-urlmatch http.sslverify https://good.example.com
 | |
| true
 | |
| % git config --bool --get-urlmatch http.sslverify https://weak.example.com
 | |
| false
 | |
| % git config --get-urlmatch http https://weak.example.com
 | |
| http.cookieFile /tmp/cookie.txt
 | |
| http.sslverify false
 | |
| ------------
 | |
| 
 | |
| include::config.txt[]
 | |
| 
 | |
| GIT
 | |
| ---
 | |
| Part of the linkgit:git[1] suite
 |