Git:git credential cache store 让我们的开发生活更便捷

274 阅读4分钟

在日常开发中,开发者经常需要频繁地与远程仓库进行交互,这时每次操作都要输入用户名和密码,不仅麻烦,还容易出错。Git 提供了一种解决方案,叫做 Credential Cache,可以缓存我们的凭证,使我们的开发流程更加顺畅。

本文将深入讲解 git credential-cache store 的使用方法及其原理,帮助我们在实际开发中更好地管理凭证,提高效率,并对比 Windows 和 Linux 系统上的不同使用方法。

Screenshot 2024-06-14 211826.png

什么是 Git Credential Cache

Git Credential Cache 是 Git 提供的一种机制,用于临时缓存用户的凭证信息,以便在一定时间内免去重复输入用户名和密码的烦恼。与永久存储凭证的方式不同,Credential Cache 更加安全,因为它只会在指定时间内有效,减少了凭证泄露的风险。

使用 Credential Cache 的步骤

  1. 启动 Credential Cache 守护进程: 在使用 Credential Cache 之前,需要先启动一个守护进程。该进程会在后台运行,管理我们的凭证缓存。

    git config --global credential.helper cache
    
  2. 设置缓存时间: 默认情况下,Credential Cache 的缓存时间为 15 分钟。我们可以通过以下命令自定义缓存时间(单位为秒)。

    git config --global credential.helper 'cache --timeout=3600'
    

    以上命令将缓存时间设置为 1 小时。

  3. 使用 Git 命令: 启动 Credential Cache 后,当我们进行 Git 操作时(如 git pullgit push),系统会提示我们输入用户名和密码。输入后,凭证将被缓存,后续操作将在缓存时间内自动使用这些凭证。

  4. 清除缓存: 如果我们想手动清除缓存,可以使用以下命令:

    git credential-cache exit
    

在 Windows 系统上的使用

Windows 系统默认不支持 Unix 套接字,这使得 git credential-cache 无法直接使用。取而代之的是,可以使用 Git for Windows 提供的 wincredmanager 作为凭证管理器。

配置 wincred

git config --global credential.helper wincred

配置 manager 或 manager-core

git config --global credential.helper manager

或者:

git config --global credential.helper manager-core

验证配置

git config --global credential.helper

在 Linux 系统上的使用

Linux 系统上,git credential-cache 可以直接使用,因为它依赖于 Unix 套接字,这是 Linux 系统的内置功能。具体操作步骤如下:

  1. 启动 Credential Cache 守护进程

    git config --global credential.helper cache
    
  2. 设置缓存时间

    默认缓存时间是 15 分钟,我们可以通过以下命令设置自定义的缓存时间(例如 1 小时):

    git config --global credential.helper 'cache --timeout=3600'
    
  3. 使用 Git 命令

    在进行 Git 操作时(如 git pullgit push),系统会提示我们输入用户名和密码。输入后,凭证将被缓存,后续操作将在缓存时间内自动使用这些凭证。

  4. 清除缓存

    如果需要手动清除缓存,可以使用以下命令:

    git credential-cache exit
    

检查是否已经启用

无论是 Windows 还是 Linux,我们都可以通过以下命令来检查当前的 credential.helper 配置:

git config --global credential.helper

如果已经配置了 credential.helper,该命令会返回相应的配置名称,如 cachewincredmanager

示例场景

假设我们在 Windows 系统上工作,并且选择使用 manager-core 来管理我们的凭证。以下是具体的操作步骤:

  1. 配置 manager-core

    git config --global credential.helper manager-core
    
  2. 验证配置:

    git config --global credential.helper
    

    输出结果应为 manager-core

对比总结

Windows

  • wincred:

    • 功能: 直接利用 Windows 系统自带的 Credential Manager 来存储和管理 Git 凭证。
    • 配置命令: git config --global credential.helper wincred
    • 特点: 简单直接,适合一般用户的需求。
  • manager 或 manager-core:

    • 功能: 提供更加高级和全面的凭证管理功能,支持多种身份验证方式,包括二次验证、多因素验证等。
    • 配置命令: git config --global credential.helper managergit config --global credential.helper manager-core
    • 特点: 功能更丰富,支持更多的身份验证方式,适合有更高安全需求或需要多平台支持的用户。

Linux

  • credential-cache:
    • 功能: 临时缓存用户的凭证信息,以便在一定时间内免去重复输入用户名和密码的烦恼。
    • 配置命令: git config --global credential.helper cache
    • 特点: 依赖于 Unix 套接字,适合频繁进行 Git 操作的用户。

使用场景及注意事项

  • 频繁的 Git 操作

    • 如果我们在短时间内需要进行多次 Git 操作(如代码提交、拉取、推送等),使用 Credential Cache 可以显著减少输入凭证的次数,提高工作效率。
  • 公共计算机或共享环境

    • 在公共计算机或共享环境中,使用 Credential Cache 需要特别注意安全性。确保缓存时间合适,并在使用完毕后手动清除缓存,避免他人使用我们的凭证。
  • 团队开发

    • 在团队开发中,推荐使用每个团队成员都配置自己的 Credential Cache 或 manager,这样可以避免因为频繁输入凭证而带来的困扰,同时保持凭证的安全性。