2011-06-29 8 views
5

Hay una desconcertante variedad de opciones que se pueden configurar a través de git config, y que es just the documented ones. De todas estas opciones, ¿cuáles deberían tener cada desarrollador en su casilla (como user.email)? ¿Y cuáles son los más comunes que deben establecerse en situaciones comunes (como core.autocrlf=input en Windows)? Pero por favor, aléjese de los argumentos religiosos (como la única configuración aceptable de core.whitespace siendo tab-in-indent)¿Qué debería ir en un archivo predeterminado de configuración de git?

Respuesta

7

Su configuración global de git (~/.gitconfig) realmente debería contener la configuración que se aplica a TODOS sus repositorios. Principalmente cosas como user.name, user.email, core.editor, merge y diff se deben establecer de forma bastante consistente. Dicho esto, también me gusta habilitar color, core.pager, rerere, rebase.autosquash y una gran cantidad de alias.

[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' [email protected])\"' - 
    squash = !sh -c 'git commit -a -m \"squash! $(git log -1 --format='%s' [email protected])\"' - 
    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 
+8

En lugar de un "muéstrame el tuyo y te muestro usted mío "¿crees que podrías explicar y justificar cada elemento? Parece una lista muy larga llena de personlaizations. ¿Cuáles deberían entrar en "cada" configuración? – shemnon

+0

El todo, como para todos, probablemente solo sea: user.name, user.email, core.editor, merge y diff. Simplemente incluí mi configuración global común compartida para referencia. – Guildencrantz

1

Aquí hay una lista anotada de varias de las configuraciones de configuración más comunes. Por supuesto, el flujo de trabajo de entorno/lenguaje/os/git de todo el mundo es diferente, por lo que es probable que tengas que ajustarlo un poco, pero estas son algunas de las variables de configuración más comunes.

[user] 
    # these are about the most basic and should pretty much always exist 
    email = [email protected] 
    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's 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 

respuesta fusionó de varias fuentes:

  1. http://githowto.com/aliases
  2. http://www.javacodegeeks.com/2013/06/git-configuration-options-you-cant-miss.html
  3. http://michaelwales.com/articles/make-gitconfig-work-for-you/
  4. http://wildlyinaccurate.com/useful-git-configuration-items/
Cuestiones relacionadas