Git配置文件介绍和举例

2013.08.25/2014.05.17发布于笔记暂无评论/目录

收集常用的Git配置。

配置文件介绍

Git的配置文件分为系统级别(system)、用户级别(global)和仓库级别三个,详细内容可参考man git-config。

/etc/gitconfig

系统级别的git配置文件,对系统上的所有用户和所有代码仓库都有效,可被用户级别(~/.gitconfig)和仓库级别(.git/config)的配置文件覆盖。

使用git config --system ... 命令可以修改该配置。

~/.gitconfig

用户级别的git配置文件,对该用户的所有代码仓库都有效,可被仓库级别的配置文件(.git/config)覆盖。

使用git config --global ... 命令可以直接修改该配置。

$repo/.git/config

仓库级别的git配置文件,仅对当前代码仓库($repo)有效,但是可覆盖定义在/etc/gitconfig和~/.gitconfig里的配置。

git config ... 命令默认修改此配置文件,如果想使用另外的路径存储配置文件可以为git confi命令使用'-f/--file'选项。

.gitmodules

配置git仓库的子模块。可参考这里.

常用配置项

http代理

git config http.proxy 'http://localhost:8087'
git config http.proxy 'socks5://localhost:8088'

alias

git config中的alias可以像bash的内置命令alias一样为常用的很长的命令分配一个别名,比如

git config alias.lsm "ls-files -m"

然后使用git lsm即相当于git ls-files -m的效果。

另外如果alias的命令开头带叹号!,则表示后面的命令将被视为shell命令[1],例如

git config alias.lsm '!git ls-files -m'

效果和之前一样,需要注意的是为防止shell解释叹号,命令左右要用单引号。

配置文件举例

以我的用户级git配置文件和全局ignore文件为例。

我的~/.gitconfig

# user info
git config --global user.name me
git config --global user.email me@my.com
# core settings
git config --global diff.tool vimdiff
git config --global core.editor vim
git cofnig --global core.excludesfile ~/.gitignore
# alias
git config --global alias.br branch
git config --global alias.co checkout
git config --global alias.df difftool
git config --global alias mg merge
git config --global alias.st status
git config --global alias.last "log --pretty=oneline -1 HEAD"
git config --global alias.glog "log --graph --date=short --pretty=tformat:'%ad %h %s'"
git config --global alias.unstage "reset HEAD"

我的~/.gitgnore

用于忽略部分文件,用户级别的ignore文件位于~/.gitignore,仓库级别的ignore文件位于$repo/.gitignore。详情请参考man 5 gitignore

# Backup files
*~
 
# Version control
.svn*

# Compiled source
*.com
*.class
*.dll
*.exe
*.o
*.so
*.py[co]
*.egg-info
nbproject/

# Archives
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# OS generated files
.DS_Store
.DS_Store?

其他相关的设置

使用ssh传输协议

git clone ssh://name@host/absolute/path/to/repo
git clone name@host:/path/to/repo

如果ssh的端口不是默认的22或者需要定义单独的密钥位置,则需要修改ssh的配置文件~/.ssh/config,详情可参考ssh配置

自动补全

git的代码仓库里有针对shell和bash等unix shell的命令行补全脚本,使用后会提高不少工作效率,可以从这里下载。

以bash为例,依次执行以下命令即可。

wget -O ~/.git-completion.bash https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
echo "source ~/.git-completion.bash" >> ~/.bashrc
source ~/.bashrc

使用ssh协议访问远程仓库

使用ssh协议访问远程仓库时,如果仓库所在服务器的sshd端口号不是默认的22的话,git将无法访问。解决方法是,在~/.ssh/config里修改服务器的port。

Host ip_or_host_name_of_target_server
Port sshd_port_number

比如,

Host github.com
Port 22
Host *
Port 1234

阅读资料


  1. 参考man git config的Variables部分alias.*的说明,引用于2014-05-13。

#config#git

评论