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?
5
A
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
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:
Cuestiones relacionadas
- 1. ¿Qué lógica debería ir en la clase de dominio y qué debería ir en un servicio en Grails?
- 2. ¿Qué código de configuración debería ir en Constructores de formulario frente a evento Carga de formulario?
- 3. ¿Cómo compartir un archivo de configuración en git?
- 4. ¿Por qué debería alguien etiquetar en Git?
- 5. Configuración de un origen remoto de git
- 6. ¿Eliminará Git un archivo que no debería estar allí?
- 7. Establecer git diff en un valor predeterminado
- 8. configuración de un host virtual apache predeterminado
- 9. ¿Hay un [Ir a archivo ...] en Xcode?
- 10. ¿Por qué debería usar git en lugar de svn?
- 11. Anexar a un archivo en Ir
- 12. android - ir a la pantalla de configuración
- 13. configuración básica de git
- 14. WCF Configuración sin un archivo de configuración
- 15. negarse git para ir a buscar en la rama actual
- 16. ¿Qué debería saber sobre Git antes de comenzar a usarlo?
- 17. ¿Dónde debe ir un archivo de preferencias .xml?
- 18. Configuración de Git Server en Windows con git-http-backend.exe
- 19. Git http.proxy Configuración
- 20. configuración de configuración de git para archivos de gran tamaño
- 21. ¿Debería comprometer .gitignore en los repositorios Git?
- 22. ¿Por qué encriptar un archivo de configuración web?
- 23. La aplicación para iPhone debería cerrarse, no ir al fondo
- 24. log4j: ¿qué archivo de configuración se usó?
- 25. Git - eliminar y excluir el archivo de configuración
- 26. configuración del segmento predeterminado en UISegmentedControl
- 27. Configuración de un aspecto predeterminado para un componente personalizado en Flex 4
- 28. git --git-dir no funciona como debería
- 29. git checkout revisión de un archivo en git gui
- 30. Visualización de un archivo eliminado en Git
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
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