我最近切换到将我的存储库同步到GitHub上的https://(由于防火墙问题),它每次都会要求输入密码。

有没有办法缓存凭据,而不是每次git推送时都进行身份验证?


当前回答

在GNU/Linux设置中,~/.netrc也非常有效:

$ cat ~/.netrc
machine github.com login lot105 password howsyafather

这可能取决于Git用于HTTPS传输的网络库。

其他回答

为了安全起见,最好使用凭据,但您可以使用缓存将其保存一段时间:

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

您的凭据将保存3600秒。

您可以使用Git凭据管理器(GCM)插件。它目前由GitHub维护。好的是,它将密码保存在Windows凭据存储中,而不是纯文本。

项目的发布页面上有一个安装程序。这还将安装内置凭据管理器的Windows Git官方版本。它允许对GitHub(和其他服务器)进行双重身份验证。并具有用于初始登录的图形界面。

对于Cygwin用户(或已经使用官方Git For Windows的用户),您可能更喜欢手动安装。从发布页面下载zip包。解压缩包,然后运行install.cmd文件。这将安装到您的~/bin文件夹中。(确保~/bin目录位于PATH中。)然后使用以下命令对其进行配置:

git config --global credential.helper manager

然后,Git将在向任何服务器进行身份验证时运行Git-credential-manager.exe。

这对我有用我使用的是Windows 10

git config --global credential.helper wincred

我知道这不是一个安全的解决方案,但有时你只需要一个简单的解决方案-而不需要安装任何其他东西。由于helper=store不适合我,我创建了一个虚拟助手:

创建一个脚本并将其放在用户bin文件夹中,此处名为credfake,该脚本将提供您的用户名和密码:

#!/bin/bash
while read line
do
  echo "$line"
done < "/dev/stdin"
echo username=mahuser
echo password=MahSecret12345

使其可执行:

chmod u+x /home/mahuser/bin/credfake

然后在git中配置它:

git config --global credential.helper /home/mahuser/bin/credfake

(或不使用--仅限一个回购协议的全局)

和-voilá-git将使用此用户+密码。

您可以使用凭据助手。

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

其中x是秒数。