Skip to content
📈0️⃣

git push 需要输入用户名和密码,原因分析及解决

问题描述

在使用 Git 进行推送(push)操作时,需要输入用户名和密码。

原因分析

这通常是因为您的凭证(credential)已经过期或被删除。Git 默认使用凭证助手(credential helper)来存储和管理凭证,您需要检查凭证助手的设置,确保凭证是有效的。

解决方法

bash
# 设置凭证助手为 store, 这样凭证将被存储在本地
git config --global credential.helper store
# 首次推送
git push
# 输入用户名和密码
Username for 'https://gitee.com': <username>
Password for 'https://username.@gitee.com': <password>
# 再次推送, 就不用输入用户名和密码了
git push

注意

Git 的凭证存储助手(credential.helper)设置为'store'时,并没有设定账号信息的默认保存时长,一旦保存,这些信息会留在配置中直到被手动清除。

需要注意的是,由于凭证是以明文形式存储在本地文件中的,这可能会带来安全风险。因此,建议仅在信任的环境中使用此功能,或者考虑使用其他更安全的凭证存储方法,如使用操作系统的密钥链或使用像git-credential-cache这样有过期时间设置的凭证助手。

此外,如果您希望定期清理这些凭证信息,可以手动编辑存储凭证的文件,或者更改凭证助手的配置,停止使用'store'并改用其他更安全的选项。同时,如果您担心安全问题,可以考虑使用git config --global credential.helper cache来替代store,它会在内存中缓存凭证,不会将凭证信息持久化到磁盘上,而是在缓存超时后自动丢弃这些信息。

bash
# 设置账号信息被保存1小时
git config --global credential.helper 'cache --timeout=3600'

credential.helper 命令详解

git config --global credential.helper store 是一个 Git 命令,用于设置 Git 的全局凭证助手为 "store"。这个命令的作用是将用户名和密码存储在一个本地文件中,以便在后续的操作中自动使用。

具体来说,当您使用 Git 进行操作(如克隆、推送或拉取)时,可能需要输入用户名和密码。如果您不想每次都手动输入这些信息,可以使用凭证助手来自动处理。git config --global credential.helper store 命令将凭证助手设置为 "store",这意味着 Git 会将您的用户名和密码存储在一个本地文件中,并在后续操作中自动使用它们。

使用方法如下:

  1. 打开命令行终端。
  2. 输入 git config --global credential.helper store 并按回车键执行。
  3. 接下来,当您执行需要用户名和密码的 Git 操作时,Git 会自动提示您输入用户名和密码,并将它们存储在本地文件中。在后续的操作中,Git 会自动使用这些凭据,无需再次输入。

需要注意的是,这种方法存在一定的安全风险,因为用户名和密码会被明文存储在本地文件中。因此,建议仅在信任的环境中使用此功能。