在使用git时,有默认的全局配置,每个仓库也有自己的配置,在使用时常常傻傻分不清楚,现在进行一个简单的整理记录。
一般情况下全局配置中的git账号和邮箱通常设置成自己的,其他仓库再根据项目需要进行单独配置,这样可以比较大程度的保证个人与工作能分的开。
有关全局配置和单独配置的的关系机制为:
接下来演示一下,全局配置和单仓库的独有配置,以及如何灵活配置密码。
通过全局配置文件查看全局配置,在win下一般在C:\Users\你的用户名\.gitconfig
文件中,而linux则一般在/etc/gitconfig
中
[user]
name = xxx
email = xxx
[difftool "sourcetree"]
cmd = '' \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
cmd = "'' "
trustExitCode = true
通过git命令查看全局配置
# git config --global --l
git config --global --list
user.name=xxx
user.email=xxx
difftool.sourcetree.cmd='' "$LOCAL" "$REMOTE"
mergetool.sourcetree.cmd=''
mergetool.sourcetree.trustexitcode=true
通过git命令进行修改
git config --global xxx.xxx xxx
git config --global xxx.xxx.xxx xxx
git config --global xxx.xxx.xxx.xxx xxx
在配置文件内显示为,可以发现是根据.
进行分割,注意无法直接设置git config --global xxx xxx
,必须要有层级才能设定:
[xxx]
xxx = xxx
[xxx "xxx"]
xxx = xxx
[xxx "xxx.xxx"]
xxx = xxx
可以直接操作C:\Users\你的用户名\.gitconfig
文件进行删除,也可以使用git命令进行删除:
git config --global --unset xxx.xxx.xxx.xxx xxx
单仓库的查看、修改、删除与全局的基本一致,只是配置文件位置不同、以及没有--global
选项,单仓库的配置文件一般在在你的git仓库\.git\config
文件中,这里就不一一演示单仓库配置的查看、修改、删除了,命令如下
# 查看
git config --list
# 修改
git config xxx.xxx xxx
# 删除
git config --unset xxx.xxx.xxx.xxx xxx
git是凭证通过credential.helper
来配置密码存储的,有关credential.helper
的配置大致有以下几项:cache模式
、 store模式
、osxkeychain模式
、wincred模式
、manager模式
。
使用如下命令查看当前使用的是什么存储模式,也可以直接查看配置文件:
# 全局
git config --global credential.helper
# 单仓库
git config credential.helper
cache模式
:缓存模式,可以将密码缓存在内存中一段时间,默认15min,可以进行配置。
使用方式(也可以直接编辑配置文件,参考第一部分):
1.临时缓存(默认15分钟):
# 全局配置
git config --globale credential.helper cache
# 单仓库配置
git config credential.helper cache
2.自定义缓存时间(秒)
# 全局配置
git config --globale credential.helper 'cache --timeout=3600'
# 单仓库配置
git config credential.helper 'cache --timeout=3600'
store模式
:永久存储。
~/.git-credentials
文件中C:\Users\你的用户名\.git-credentials
文件中使用方式(也可以直接编辑配置文件,参考第一部分):
# 全局配置
git config --globale credential.helper store
# 单仓库配置
git config credential.helper store
执行git pull
,然后输入正确的密码,打开C:\Users\你的用户名\.git-credentials
文件查看:
https://你的用户名:你的密码@gitee.com
因为是明文存储,所以这种方式不是很建议。
osxkeychain模式
:永久存储,仅针对于Mac,位置是系统用户的钥匙串中,但是会加密。没接触过mac,不展开讲解
wincred模式
:永久存储。
Windows凭据
中,不在存储在C:\Users\你的用户名\.git-credentials
文件中,这样你就看不到明文密码了,懒人推荐。使用方式(也可以直接编辑配置文件,参考第一部分):
# 全局配置
git config --globale credential.helper wincred
# 单仓库配置
git config credential.helper wincred
执行git pull
,然后输入正确的密码,打开Windows凭据
文件查看:
internet地址或网络地址:git:https://你的用户名@gitee.com
用户名:你的用户名
密码:⚪⚪⚪⚪⚪⚪
manager模式
:永久存储,将密码以加密形式存放在Windows凭据管理器中,并且永不过期,需要安装一个Git Credential Manager
的辅助工具,windows中,推荐使用该模式。首先安装Git Credential Manager
的辅助工具,然后修改配置:
# 全局配置
git config --globale credential.helper manager
# 单仓库配置
git config credential.helper manager
执行git pull
,然后输入正确的密码,打开Windows凭据
文件查看:
Internet 地址或网络地址:git:https://gitee.com
用户名:PersonalAccessToken
用过sourcetree的人都知道它有多好用,尽管我们不经常切换账号和修改密码,但是初始化仓库后输错密码或用户名(并非提交用户名,而是git的登陆账号)时想要修改还是很不方便的,那么该如何修改用户名和密码呢?
sourcetree将用户名保存在了哪里呢?
答案是:C:\Users\你的用户\AppData\Local\Atlassian\SourceTree
目录下的userhosts
文件,当你想删除或更新某个用户名时,来这里进行操作即可。
那么sourcetree将密码保存到了哪里呢?
答案是:C:\Users\你的用户\AppData\Local\Atlassian\SourceTree\passwd
,当你想删除或更新某个密码时,来这里进行操作即可。