git 的配置分system, global, local三个等级,global在用户目录 ~/.gitconfig里面,可以配置当前用户的所有仓库,local在某个仓库的repository/.git/config里面,只对当前repository有效
Windows系统里面,每行结尾用回车(CR)+换行(LF),Linux系统中每行结尾用换行(LF),这样会出现本来代码没有动,但是git显示有改动的情况。我们上传到版本控制系统里面的换行符一般都都是统一用LF的。因此电脑端这样配置:
git config --global core.autocrlf true
# 此命令可以在提交时把结束符CRLF转换成LF,而在拉取代码时把LF转换成CRLF。建议windows机器这样配置
git config --global core.autocrlf input
# 此命令只会在提交文件时对CRLF进行LF转换,拉取时不转换。建议linux机器这样配置
git config --global core.autocrlf false
# 此命令在提交和拉取时均不转换
配置好后,可以用以下命令来检查global配置
git config --global --list
另外,我们通常一台电脑只有一个用户,这个时候你可以设置global 用户和邮箱。然后有时候我们在一台服务器上会有多人使用,这个时候如何设置git呢。
清除global
git config --global --unset user.name
git config --global --unset user.email
ssh-keygen -t rsa -C "user1@gmail.com" -f '~/.ssh/id_rsa_1'
# 设置用户1的ssh-key
ssh-keygen -t rsa -C "user2@gmail.com" -f '~/.ssh/id_rsa_2'
# 设置用户2的ssh-key
这个时候你在~/.ssh下面可以发现有两对公钥和私钥。然后在~/ssh下面新建config文件
# user1
Host user1.github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_1
# user2
Host user2.github_pro
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_2
Host是可以随便取的别名,hostname是实际真实的服务器地址。
然后当user1 想要ssh clone 他自己的仓库的时候就不能用默认名称了, 比如
git clone git@github.com:ArnaudRinquin/atom-zentabs.git
这个时候要改为如下命令,git会通过config文件里面的host别名去取对应的ssh key文件
git clone git@user1.github.com:ArnaudRinquin/atom-zentabs.git
#user1.github.com就是我们在config里面配置的host别名
这个时候你查看这个repository的git配置文件,就会发现remote就是user1的host。
cd atom-zentabs
cd .git
vim config
# 然后你还要在这个仓库里面添加local的用户名和邮箱
git config --local user.name 'user1'
git config --local user.email 'user1@gmail.com'
然后你可以查看这个repository的配置。当然必须在这个repository目录里面才可以,否则会提示找不到配置文件。
git config --local --list