有一系列令人困惑的选项可以通过git config
进行设置,而这些选项只是文档中的选项。在所有这些选项中,每个开发人员都应该在自己的盒子上设置哪些选项(如user.email
)?在常见情况下(如Windows上的core.autocrlf=input
),最常见的设置是什么?但请远离宗教争论(比如core.whitespace
的唯一可接受的设置是tab-in-indent
)。
您的全局gitconfig(~/.gitconfig)应该真正包含适用于所有存储库的设置。主要是像user.name
、user.email
、core.editor
、merge
和diff
这样的东西应该设置得非常一致。话虽如此,我也喜欢启用color
、core.pager
、rerere
、rebase.autosquash
和一系列别名。
[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
以下是一些最常见的配置设置的注释列表。当然,每个人的环境/language/os/git工作流都是不同的,因此您可能需要对其进行一些调整,但这些是一些最常见的配置变量。
[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'
# probably not a good default for most projects,
# but you should uncomment with something 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]
# lets 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
答案从几个来源合并:
- https://githowto.com/aliases
- https://www.javacodegeeks.com/2013/06/git-configuration-options-you-cant-miss.html
- http://michaelwales.com/articles/make-gitconfig-work-for-you/#colored-输出
- https://wildlyinaccurate.com/useful-git-configuration-items/