• git全局与单仓库的密码管理


    概要

    在使用git时,有默认的全局配置,每个仓库也有自己的配置,在使用时常常傻傻分不清楚,现在进行一个简单的整理记录。

    一般情况下全局配置中的git账号和邮箱通常设置成自己的,其他仓库再根据项目需要进行单独配置,这样可以比较大程度的保证个人与工作能分的开。

    有关全局配置和单独配置的的关系机制为:

    • 单仓库会继承全局配置中的所有配置项(可通过git命令、配置文件配置)
    • 单仓库可以覆盖全局配置中的单个配置项,在使用时优先使用仓库自己的配置项(可通过git命令、配置文件配置)
    • 有关密码的设定
      • git支持将密码进行持久化保存(指定时间、永久),保存在指定位置,加密或明文
      • 有些第三方软件,比如sourcetree则会将密码保存到自己指定的文件中

    接下来演示一下,全局配置和单仓库的独有配置,以及如何灵活配置密码。

    1 全局配置的查看、修改、删除

    1.1 全局配置的查看

    通过全局配置文件查看全局配置,在win下一般在C:\Users\你的用户名\.gitconfig文件中,而linux则一般在/etc/gitconfig

    [user]
    	name = xxx
    	email = xxx
    [difftool "sourcetree"]
    	cmd = '' \"$LOCAL\" \"$REMOTE\"
    [mergetool "sourcetree"]
    	cmd = "'' "
    	trustExitCode = true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    通过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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1.2 全局配置的修改

    通过git命令进行修改

    git config --global xxx.xxx xxx
    git config --global xxx.xxx.xxx xxx
    git config --global xxx.xxx.xxx.xxx xxx
    
    • 1
    • 2
    • 3

    在配置文件内显示为,可以发现是根据.进行分割,注意无法直接设置git config --global xxx xxx,必须要有层级才能设定:

    [xxx]
    	xxx = xxx
    [xxx "xxx"]
    	xxx = xxx
    [xxx "xxx.xxx"]
    	xxx = xxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1.3 全局配置的删除

    可以直接操作C:\Users\你的用户名\.gitconfig文件进行删除,也可以使用git命令进行删除:

    git config --global --unset xxx.xxx.xxx.xxx xxx
    
    • 1

    2 单仓库配置的查看、修改、删除

    单仓库的查看、修改、删除与全局的基本一致,只是配置文件位置不同、以及没有--global选项,单仓库的配置文件一般在在你的git仓库\.git\config文件中,这里就不一一演示单仓库配置的查看、修改、删除了,命令如下

    # 查看
    git config --list
    # 修改
    git config xxx.xxx xxx
    # 删除
    git config --unset xxx.xxx.xxx.xxx xxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3 git凭证(也就是密码)存储模式

    git是凭证通过credential.helper来配置密码存储的,有关credential.helper的配置大致有以下几项:cache模式store模式osxkeychain模式wincred模式manager模式

    使用如下命令查看当前使用的是什么存储模式,也可以直接查看配置文件:

    # 全局
    git config --global credential.helper
    # 单仓库
    git config credential.helper
    
    • 1
    • 2
    • 3
    • 4

    3.1 cache模式

    cache模式:缓存模式,可以将密码缓存在内存中一段时间,默认15min,可以进行配置。

    • Linux:适用
    • windows:不适用,具体原因这里不展开讲解,网上说是因为git-credential-cache通过Unix套接字进行通信,所以不支持。

    使用方式(也可以直接编辑配置文件,参考第一部分):

    1.临时缓存(默认15分钟):

    # 全局配置
    git config --globale credential.helper cache
    # 单仓库配置
    git config credential.helper cache
    
    • 1
    • 2
    • 3
    • 4

    2.自定义缓存时间(秒)

    # 全局配置
    git config --globale credential.helper 'cache --timeout=3600'
    # 单仓库配置
    git config credential.helper 'cache --timeout=3600'
    
    • 1
    • 2
    • 3
    • 4

    3.2 store模式

    • store模式:永久存储。
      • Linux:则将密码以明文存放在~/.git-credentials文件中
      • windows:则将密码以明文存放在C:\Users\你的用户名\.git-credentials文件中

    使用方式(也可以直接编辑配置文件,参考第一部分):

    # 全局配置
    git config --globale credential.helper store
    # 单仓库配置
    git config credential.helper store
    
    • 1
    • 2
    • 3
    • 4

    执行git pull,然后输入正确的密码,打开C:\Users\你的用户名\.git-credentials文件查看:

    https://你的用户名:你的密码@gitee.com
    
    • 1

    因为是明文存储,所以这种方式不是很建议。

    3.3 osxkeychain模式

    • osxkeychain模式:永久存储,仅针对于Mac,位置是系统用户的钥匙串中,但是会加密。

    没接触过mac,不展开讲解

    3.4 wincred模式

    • wincred模式:永久存储。
      • Linux:不适用
      • windows:与store模式类似,将用户信息存储到Windows凭据中,不在存储在C:\Users\你的用户名\.git-credentials文件中,这样你就看不到明文密码了,懒人推荐。

    使用方式(也可以直接编辑配置文件,参考第一部分):

    # 全局配置
    git config --globale credential.helper wincred
    # 单仓库配置
    git config credential.helper wincred
    
    • 1
    • 2
    • 3
    • 4

    执行git pull,然后输入正确的密码,打开Windows凭据文件查看:

    internet地址或网络地址:git:https://你的用户名@gitee.com
    用户名:你的用户名
    密码:⚪⚪⚪⚪⚪⚪
    
    • 1
    • 2
    • 3

    3.5 manager模式

    • manager模式:永久存储,将密码以加密形式存放在Windows凭据管理器中,并且永不过期,需要安装一个Git Credential Manager的辅助工具,windows中,推荐使用该模式。

    首先安装Git Credential Manager的辅助工具,然后修改配置:

    # 全局配置
    git config --globale credential.helper manager
    # 单仓库配置
    git config credential.helper manager
    
    • 1
    • 2
    • 3
    • 4

    执行git pull,然后输入正确的密码,打开Windows凭据文件查看:

    Internet 地址或网络地址:git:https://gitee.com 
    用户名:PersonalAccessToken
    
    • 1
    • 2

    4 第三方软件(sourcetree)密码的存储

    用过sourcetree的人都知道它有多好用,尽管我们不经常切换账号和修改密码,但是初始化仓库后输错密码或用户名(并非提交用户名,而是git的登陆账号)时想要修改还是很不方便的,那么该如何修改用户名和密码呢?

    4.1 sourcetree修改登录的账号

    sourcetree将用户名保存在了哪里呢?

    答案是:C:\Users\你的用户\AppData\Local\Atlassian\SourceTree 目录下的userhosts文件,当你想删除或更新某个用户名时,来这里进行操作即可。

    4.2 sourcetree修改登录的密码

    那么sourcetree将密码保存到了哪里呢?

    答案是:C:\Users\你的用户\AppData\Local\Atlassian\SourceTree\passwd,当你想删除或更新某个密码时,来这里进行操作即可。

  • 相关阅读:
    Ansible 自动化运维工具的使用
    Java中的网络编程------基于Socket的TCP编程和基于UDP的网络编程,netstat指令
    基于JAVA三合国际影城计算机毕业设计源码+数据库+lw文档+系统+部署
    通过.sh文件快捷部署jar包到服务器上
    Gitter+Sidecar制作聊天室
    hand_mysql
    Redis 过期删除策略和内存淘汰策略
    记一次asp.net 8 服务器爆满的解决过程
    Chrome 浏览器经常卡死问题解决
    Element ui table表格内容超出隐藏显示省略号
  • 原文地址:https://blog.csdn.net/weixin_43702146/article/details/133637650