What should be done in the default git configuration file?

There is perplexity in the array of parameters that can be set using git config, and these are only documented . Of all these options that each developer should install in his field (for example, user.email)? And which of them are most common in ordinary situations (for example, core.autocrlf=inputin Windows)? But please stay away from religious arguments (e.g. the only acceptable setting core.whitespace tab-in-indent)

+5
source share
2 answers

Your global git configuration (~ / .gitconfig) should really contain settings that apply to all your repositories. First of all such things as user.name, user.email, core.editor, mergeand diffshould be fairly consistent set. At the same time I would also like to include color, core.pager, rerere, rebase.autosquashand a variety of aliases.

[color]
    filemode = false
    diff = auto
    status = auto
    branch = auto
    pager = true
[alias]
    b = branch
    ci = commit
    co = checkout
    cob = checkout -b
    d = diff
    l = log
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
    lga = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative --branches
    st = status
    fixup = !sh -c 'git commit -a -m \"fixup! $(git log -1 --format='%s' $@)\"' -
    squash = !sh -c 'git commit -a -m \"squash! $(git log -1 --format='%s' $@)\"' -
    ri = rebase --interactive
    rc = rebase --continue
    pr = push gerrit HEAD:refs/for/master
    mt = mergetool
[user]
    email = REDACTED
    name = Matt Henkel
[core]
    pager = less -FRSX
    excludes = ~/.gitexcludes
    editor = vim
[rerere]
    enabled = true
    autoupdate = true
[rebase]
    autosquash = true
[merge]
    tool = kdiff3
[mergetool "kdiff3"]
    keepBackup = false
    trustExitCode = false
[diff]
    tool = kdiff3
+7
source

Here is an annotated list of some of the most common configuration options. Of course, each environment / language / os / git workflow is different, so you may have to adjust it a bit, but these are some of the most common configuration variables.

[user]
    # these are about the most basic and should pretty much always exist
    email = your-email@example.com
    name = Your Name
[core]
    # if you use windows
    #autocrlf = true

    # use aggressive compression
    # can make your repo smaller but can also be slow
    compression = 9

    # lets you define a global .gitignore for all those 
    # *.swp, *~, *.o, etc things that you're frequently 
    # sticking in .gitignore
    excludesfile = ~/.gitignore_global

    # tells git to ignore file permission changes
    filemode = false

    # lets you tweak the default pager
    # see `man less` for the meaning of these flags
    pager = 'less -FRSX'

    # just because you said not to ;)
    # probably not a good default for most projects, 
    # but you should set something here based on your needs
    whitespace = tab-in-indent
[color]
    # this turns on default colors for many commands
    # or you can customize specific colors per command (see [3] for example)
    ui = auto

[rerere]
    # google `git rerere`, basically git remembers your
    # partial merge choices and replays them next time
    enabled = true
    autoupdate = true

[push]
    # let you say just `git push origin` to push the current branch
    default = current 

[alias]
    # this is the most subjective section 

    # aliases are useful if you either frequently typo certain words
    # or else if you are used to another VC like cvs or svn
    co = checkout
    ci = commit
    st = status
    br = branch -av
    brdel = branch -D

    # Show all of my configured aliases
    aliases = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1\\ \t => \\2/' | sort

    # pretty much everybody has their favorite log format view
    # you can find dozens of variations with a quick google
    # here are couple of the most common (the first is my favorite)
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
    hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short

The answer is combined from several sources:

+1

All Articles