Documentation / config.txton commit Documentation: detached HEAD (5e1a2e8)
   1CONFIGURATION FILE
   2------------------
   3
   4The git configuration file contains a number of variables that affect
   5the git command's behavior. `.git/config` file for each repository
   6is used to store the information for that repository, and
   7`$HOME/.gitconfig` is used to store per user information to give
   8fallback values for `.git/config` file.
   9
  10They can be used by both the git plumbing
  11and the porcelains. The variables are divided into sections, where
  12in the fully qualified variable name the variable itself is the last
  13dot-separated segment and the section name is everything before the last
  14dot. The variable names are case-insensitive and only alphanumeric
  15characters are allowed. Some variables may appear multiple times.
  16
  17The syntax is fairly flexible and permissive; whitespaces are mostly
  18ignored. The '#' and ';' characters begin comments to the end of line,
  19blank lines are ignored, lines containing strings enclosed in square
  20brackets start sections and all the other lines are recognized
  21as setting variables, in the form 'name = value'. If there is no equal
  22sign on the line, the entire line is taken as 'name' and the variable
  23is recognized as boolean "true". String values may be entirely or partially
  24enclosed in double quotes; some variables may require special value format.
  25
  26Example
  27~~~~~~~
  28
  29        # Core variables
  30        [core]
  31                ; Don't trust file modes
  32                filemode = false
  33
  34        # Our diff algorithm
  35        [diff]
  36                external = "/usr/local/bin/gnu-diff -u"
  37                renames = true
  38
  39        [branch "devel"]
  40                remote = origin
  41                merge = refs/heads/devel
  42
  43
  44Variables
  45~~~~~~~~~
  46
  47Note that this list is non-comprehensive and not necessarily complete.
  48For command-specific variables, you will find a more detailed description
  49in the appropriate manual page. You will find a description of non-core
  50porcelain configuration variables in the respective porcelain documentation.
  51
  52core.fileMode::
  53        If false, the executable bit differences between the index and
  54        the working copy are ignored; useful on broken filesystems like FAT.
  55        See gitlink:git-update-index[1]. True by default.
  56
  57core.gitProxy::
  58        A "proxy command" to execute (as 'command host port') instead
  59        of establishing direct connection to the remote server when
  60        using the git protocol for fetching. If the variable value is
  61        in the "COMMAND for DOMAIN" format, the command is applied only
  62        on hostnames ending with the specified domain string. This variable
  63        may be set multiple times and is matched in the given order;
  64        the first match wins.
  65+
  66Can be overridden by the 'GIT_PROXY_COMMAND' environment variable
  67(which always applies universally, without the special "for"
  68handling).
  69
  70core.ignoreStat::
  71        The working copy files are assumed to stay unchanged until you
  72        mark them otherwise manually - Git will not detect the file changes
  73        by lstat() calls. This is useful on systems where those are very
  74        slow, such as Microsoft Windows.  See gitlink:git-update-index[1].
  75        False by default.
  76
  77core.preferSymlinkRefs::
  78        Instead of the default "symref" format for HEAD
  79        and other symbolic reference files, use symbolic links.
  80        This is sometimes needed to work with old scripts that
  81        expect HEAD to be a symbolic link.
  82
  83core.logAllRefUpdates::
  84        Updates to a ref <ref> is logged to the file
  85        "$GIT_DIR/logs/<ref>", by appending the new and old
  86        SHA1, the date/time and the reason of the update, but
  87        only when the file exists.  If this configuration
  88        variable is set to true, missing "$GIT_DIR/logs/<ref>"
  89        file is automatically created for branch heads.
  90+
  91This information can be used to determine what commit
  92was the tip of a branch "2 days ago".
  93+
  94This value is true by default in a repository that has
  95a working directory associated with it, and false by
  96default in a bare repository.
  97
  98core.repositoryFormatVersion::
  99        Internal variable identifying the repository format and layout
 100        version.
 101
 102core.sharedRepository::
 103        When 'group' (or 'true'), the repository is made shareable between
 104        several users in a group (making sure all the files and objects are
 105        group-writable). When 'all' (or 'world' or 'everybody'), the
 106        repository will be readable by all users, additionally to being
 107        group-shareable. When 'umask' (or 'false'), git will use permissions
 108        reported by umask(2). See gitlink:git-init[1]. False by default.
 109
 110core.warnAmbiguousRefs::
 111        If true, git will warn you if the ref name you passed it is ambiguous
 112        and might match multiple refs in the .git/refs/ tree. True by default.
 113
 114core.compression::
 115        An integer -1..9, indicating the compression level for objects that
 116        are not in a pack file. -1 is the zlib and git default. 0 means no
 117        compression, and 1..9 are various speed/size tradeoffs, 9 being
 118        slowest.
 119
 120core.legacyheaders::
 121        A boolean which enables the legacy object header format in case
 122        you want to interoperate with old clients accessing the object
 123        database directly (where the "http://" and "rsync://" protocols
 124        count as direct access).
 125
 126core.packedGitWindowSize::
 127        Number of bytes of a pack file to map into memory in a
 128        single mapping operation.  Larger window sizes may allow
 129        your system to process a smaller number of large pack files
 130        more quickly.  Smaller window sizes will negatively affect
 131        performance due to increased calls to the operating system's
 132        memory manager, but may improve performance when accessing
 133        a large number of large pack files.
 134+
 135Default is 1 MiB if NO_MMAP was set at compile time, otherwise 32
 136MiB on 32 bit platforms and 1 GiB on 64 bit platforms.  This should
 137be reasonable for all users/operating systems.  You probably do
 138not need to adjust this value.
 139+
 140Common unit suffixes of 'k', 'm', or 'g' are supported.
 141
 142core.packedGitLimit::
 143        Maximum number of bytes to map simultaneously into memory
 144        from pack files.  If Git needs to access more than this many
 145        bytes at once to complete an operation it will unmap existing
 146        regions to reclaim virtual address space within the process.
 147+
 148Default is 256 MiB on 32 bit platforms and 8 GiB on 64 bit platforms.
 149This should be reasonable for all users/operating systems, except on
 150the largest projects.  You probably do not need to adjust this value.
 151+
 152Common unit suffixes of 'k', 'm', or 'g' are supported.
 153
 154alias.*::
 155        Command aliases for the gitlink:git[1] command wrapper - e.g.
 156        after defining "alias.last = cat-file commit HEAD", the invocation
 157        "git last" is equivalent to "git cat-file commit HEAD". To avoid
 158        confusion and troubles with script usage, aliases that
 159        hide existing git commands are ignored. Arguments are split by
 160        spaces, the usual shell quoting and escaping is supported.
 161        quote pair and a backslash can be used to quote them.
 162
 163apply.whitespace::
 164        Tells `git-apply` how to handle whitespaces, in the same way
 165        as the '--whitespace' option. See gitlink:git-apply[1].
 166
 167branch.<name>.remote::
 168        When in branch <name>, it tells `git fetch` which remote to fetch.
 169        If this option is not given, `git fetch` defaults to remote "origin".
 170
 171branch.<name>.merge::
 172        When in branch <name>, it tells `git fetch` the default refspec to
 173        be marked for merging in FETCH_HEAD. The value has exactly to match
 174        a remote part of one of the refspecs which are fetched from the remote
 175        given by "branch.<name>.remote".
 176        The merge information is used by `git pull` (which at first calls
 177        `git fetch`) to lookup the default branch for merging. Without
 178        this option, `git pull` defaults to merge the first refspec fetched.
 179        Specify multiple values to get an octopus merge.
 180
 181color.branch::
 182        A boolean to enable/disable color in the output of
 183        gitlink:git-branch[1]. May be set to `true` (or `always`),
 184        `false` (or `never`) or `auto`, in which case colors are used
 185        only when the output is to a terminal. Defaults to false.
 186
 187color.branch.<slot>::
 188        Use customized color for branch coloration. `<slot>` is one of
 189        `current` (the current branch), `local` (a local branch),
 190        `remote` (a tracking branch in refs/remotes/), `plain` (other
 191        refs), or `reset` (the normal terminal color).  The value for
 192        these configuration variables can be one of: `normal`, `bold`,
 193        `dim`, `ul`, `blink`, `reverse`, `reset`, `black`, `red`,
 194        `green`, `yellow`, `blue`, `magenta`, `cyan`, or `white`.
 195
 196color.diff::
 197        When true (or `always`), always use colors in patch.
 198        When false (or `never`), never.  When set to `auto`, use
 199        colors only when the output is to the terminal.
 200
 201color.diff.<slot>::
 202        Use customized color for diff colorization.  `<slot>`
 203        specifies which part of the patch to use the specified
 204        color, and is one of `plain` (context text), `meta`
 205        (metainformation), `frag` (hunk header), `old` (removed
 206        lines), or `new` (added lines).  The values of these
 207        variables may be specified as in color.branch.<slot>.
 208
 209color.pager::
 210        A boolean to enable/disable colored output when the pager is in
 211        use (default is true).
 212
 213color.status::
 214        A boolean to enable/disable color in the output of
 215        gitlink:git-status[1]. May be set to `true` (or `always`),
 216        `false` (or `never`) or `auto`, in which case colors are used
 217        only when the output is to a terminal. Defaults to false.
 218
 219color.status.<slot>::
 220        Use customized color for status colorization. `<slot>` is
 221        one of `header` (the header text of the status message),
 222        `added` or `updated` (files which are added but not committed),
 223        `changed` (files which are changed but not added in the index),
 224        or `untracked` (files which are not tracked by git). The values of
 225        these variables may be specified as in color.branch.<slot>.
 226
 227diff.renameLimit::
 228        The number of files to consider when performing the copy/rename
 229        detection; equivalent to the git diff option '-l'.
 230
 231diff.renames::
 232        Tells git to detect renames.  If set to any boolean value, it
 233        will enable basic rename detection.  If set to "copies" or
 234        "copy", it will detect copies, as well.
 235
 236format.headers::
 237        Additional email headers to include in a patch to be submitted
 238        by mail.  See gitlink:git-format-patch[1].
 239
 240gc.reflogexpire::
 241        `git reflog expire` removes reflog entries older than
 242        this time; defaults to 90 days.
 243
 244gc.reflogexpireunreachable::
 245        `git reflog expire` removes reflog entries older than
 246        this time and are not reachable from the current tip;
 247        defaults to 30 days.
 248
 249gc.rerereresolved::
 250        Records of conflicted merge you resolved earlier are
 251        kept for this many days when `git rerere gc` is run.
 252        The default is 60 days.  See gitlink:git-rerere[1].
 253
 254gc.rerereunresolved::
 255        Records of conflicted merge you have not resolved are
 256        kept for this many days when `git rerere gc` is run.
 257        The default is 15 days.  See gitlink:git-rerere[1].
 258
 259gitcvs.enabled::
 260        Whether the cvs pserver interface is enabled for this repository.
 261        See gitlink:git-cvsserver[1].
 262
 263gitcvs.logfile::
 264        Path to a log file where the cvs pserver interface well... logs
 265        various stuff. See gitlink:git-cvsserver[1].
 266
 267http.sslVerify::
 268        Whether to verify the SSL certificate when fetching or pushing
 269        over HTTPS. Can be overridden by the 'GIT_SSL_NO_VERIFY' environment
 270        variable.
 271
 272http.sslCert::
 273        File containing the SSL certificate when fetching or pushing
 274        over HTTPS. Can be overridden by the 'GIT_SSL_CERT' environment
 275        variable.
 276
 277http.sslKey::
 278        File containing the SSL private key when fetching or pushing
 279        over HTTPS. Can be overridden by the 'GIT_SSL_KEY' environment
 280        variable.
 281
 282http.sslCAInfo::
 283        File containing the certificates to verify the peer with when
 284        fetching or pushing over HTTPS. Can be overridden by the
 285        'GIT_SSL_CAINFO' environment variable.
 286
 287http.sslCAPath::
 288        Path containing files with the CA certificates to verify the peer
 289        with when fetching or pushing over HTTPS. Can be overridden
 290        by the 'GIT_SSL_CAPATH' environment variable.
 291
 292http.maxRequests::
 293        How many HTTP requests to launch in parallel. Can be overridden
 294        by the 'GIT_HTTP_MAX_REQUESTS' environment variable. Default is 5.
 295
 296http.lowSpeedLimit, http.lowSpeedTime::
 297        If the HTTP transfer speed is less than 'http.lowSpeedLimit'
 298        for longer than 'http.lowSpeedTime' seconds, the transfer is aborted.
 299        Can be overridden by the 'GIT_HTTP_LOW_SPEED_LIMIT' and
 300        'GIT_HTTP_LOW_SPEED_TIME' environment variables.
 301
 302http.noEPSV::
 303        A boolean which disables using of EPSV ftp command by curl.
 304        This can helpful with some "poor" ftp servers which doesn't
 305        support EPSV mode. Can be overridden by the 'GIT_CURL_FTP_NO_EPSV'
 306        environment variable. Default is false (curl will use EPSV).
 307
 308i18n.commitEncoding::
 309        Character encoding the commit messages are stored in; git itself
 310        does not care per se, but this information is necessary e.g. when
 311        importing commits from emails or in the gitk graphical history
 312        browser (and possibly at other places in the future or in other
 313        porcelains). See e.g. gitlink:git-mailinfo[1]. Defaults to 'utf-8'.
 314
 315i18n.logOutputEncoding::
 316        Character encoding the commit messages are converted to when
 317        running `git-log` and friends.
 318
 319log.showroot::
 320        If true, the initial commit will be shown as a big creation event.
 321        This is equivalent to a diff against an empty tree.
 322        Tools like gitlink:git-log[1] or gitlink:git-whatchanged[1], which
 323        normally hide the root commit will now show it. True by default.
 324
 325merge.summary::
 326        Whether to include summaries of merged commits in newly created
 327        merge commit messages. False by default.
 328
 329merge.verbosity::
 330        Controls the amount of output shown by the recursive merge
 331        strategy.  Level 0 outputs nothing except a final error
 332        message if conflicts were detected. Level 1 outputs only
 333        conflicts, 2 outputs conflicts and file changes.  Level 5 and
 334        above outputs debugging information.  The default is level 2.
 335
 336pack.window::
 337        The size of the window used by gitlink:git-pack-objects[1] when no
 338        window size is given on the command line. Defaults to 10.
 339
 340pull.octopus::
 341        The default merge strategy to use when pulling multiple branches
 342        at once.
 343
 344pull.twohead::
 345        The default merge strategy to use when pulling a single branch.
 346
 347remote.<name>.url::
 348        The URL of a remote repository.  See gitlink:git-fetch[1] or
 349        gitlink:git-push[1].
 350
 351remote.<name>.fetch::
 352        The default set of "refspec" for gitlink:git-fetch[1]. See
 353        gitlink:git-fetch[1].
 354
 355remote.<name>.push::
 356        The default set of "refspec" for gitlink:git-push[1]. See
 357        gitlink:git-push[1].
 358
 359repack.usedeltabaseoffset::
 360        Allow gitlink:git-repack[1] to create packs that uses
 361        delta-base offset.  Defaults to false.
 362
 363show.difftree::
 364        The default gitlink:git-diff-tree[1] arguments to be used
 365        for gitlink:git-show[1].
 366
 367showbranch.default::
 368        The default set of branches for gitlink:git-show-branch[1].
 369        See gitlink:git-show-branch[1].
 370
 371tar.umask::
 372        By default, gitlink:git-tar-tree[1] sets file and directories modes
 373        to 0666 or 0777. While this is both useful and acceptable for projects
 374        such as the Linux Kernel, it might be excessive for other projects.
 375        With this variable, it becomes possible to tell
 376        gitlink:git-tar-tree[1] to apply a specific umask to the modes above.
 377        The special value "user" indicates that the user's current umask will
 378        be used. This should be enough for most projects, as it will lead to
 379        the same permissions as gitlink:git-checkout[1] would use. The default
 380        value remains 0, which means world read-write.
 381
 382user.email::
 383        Your email address to be recorded in any newly created commits.
 384        Can be overridden by the 'GIT_AUTHOR_EMAIL' and 'GIT_COMMITTER_EMAIL'
 385        environment variables.  See gitlink:git-commit-tree[1].
 386
 387user.name::
 388        Your full name to be recorded in any newly created commits.
 389        Can be overridden by the 'GIT_AUTHOR_NAME' and 'GIT_COMMITTER_NAME'
 390        environment variables.  See gitlink:git-commit-tree[1].
 391
 392whatchanged.difftree::
 393        The default gitlink:git-diff-tree[1] arguments to be used
 394        for gitlink:git-whatchanged[1].
 395
 396imap::
 397        The configuration variables in the 'imap' section are described
 398        in gitlink:git-imap-send[1].
 399
 400receive.unpackLimit::
 401        If the number of objects received in a push is below this
 402        limit then the objects will be unpacked into loose object
 403        files. However if the number of received objects equals or
 404        exceeds this limit then the received pack will be stored as
 405        a pack, after adding any missing delta bases.  Storing the
 406        pack from a push can make the push operation complete faster,
 407        especially on slow filesystems.
 408
 409receive.denyNonFastForwards::
 410        If set to true, git-receive-pack will deny a ref update which is
 411        not a fast forward. Use this to prevent such an update via a push,
 412        even if that push is forced. This configuration variable is
 413        set when initializing a shared repository.
 414