我最近切换到将我的存储库同步到GitHub上的https://(由于防火墙问题),它每次都会要求输入密码。
有没有办法缓存凭据,而不是每次git推送时都进行身份验证?
我最近切换到将我的存储库同步到GitHub上的https://(由于防火墙问题),它每次都会要求输入密码。
有没有办法缓存凭据,而不是每次git推送时都进行身份验证?
当前回答
OAuth(身份验证)
您可以创建自己的个人API令牌(OAuth),并以与使用普通凭据相同的方式使用它(位于:/settings/tokens)。例如:
git remote add fork https://4UTHT0KEN@github.com/foo/bar
git push fork
.netrc文件
另一种方法是在~/.netrc(在Windows上为_netrc)中配置用户/密码,例如。
machine github.com
login USERNAME
password PASSWORD
对于HTTPS,添加额外的行:
protocol https
凭据助手
要在使用HTTPS时在Git中缓存GitHub密码,您可以使用凭据助手告诉Git每次与GitHub对话时记住您的GitHub用户名和密码。
Mac:git config--全局凭证.helper osxkeychain(需要osxkeychain助手),Windows:git-config--全局凭据。helper wincredLinux和其他:git-config--全局凭证.helper缓存
相关:
如何在终端密钥链中存储Linux上的GitHub https密码?如何确保Git不会向我索要GitHub用户名和密码?配置Git客户端,如GitHub for Windows,以不要求身份验证将本地回购推送到具有双重身份验证的GitHub回购
其他回答
克隆存储库repo后,可以编辑repo/.git/config并添加如下配置:
[user]
name = you_name
password = you_password
[credential]
helper = store
这样就不会再次要求您输入用户名和密码。
在Ubuntu上使用GitCredentialManager(GCM)在本地缓存凭据,在Ubuntu 20.04和18.04上进行了测试,但应该可以在其他Linux发行版上运行。
设置git凭据管理器:
curl -LO https://raw.githubusercontent.com/GitCredentialManager/git-credential-manager/main/src/linux/Packaging.Linux/install-from-source.sh
sh ./install-from-source.sh
git-credential-manager-core configure
git config --global credential.credentialStore cache
git config --global credential.cacheoptions "--timeout 72000"
sudo rm -rf git-credential-manager/
sudo rm install-from-source.sh
转到回购并运行git fetch选择设备代码访问链接并输入输出中提供的代码
您还可以编辑bashrc文件并在其中添加脚本。
这将在您启动Git时询问您的密码一次,然后在您注销之前记住密码。
SSH_ENV=$HOME/.ssh/environment
# Start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# Spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
composer文档提到,您可以阻止它使用GitHub API,这样它的行为就像gitclone:
如果在GitHub存储库中将no-api键设置为true,它将像克隆任何其他Git存储库一样克隆存储库,而不是使用GitHub api。但与直接使用git驱动程序不同,composer仍然会尝试使用GitHub的zip文件。
因此,该部分将如下所示:
"repositories": [
{
"type": "vcs",
"no-api": true,
"url": "https://github.com/your/repo"
}
],
请记住,API存在是有原因的。因此,这应该是github.com上增加负载的最后手段。
如果你像我一样使用双因素身份验证,情况就有点不同了。因为我在其他地方找不到好答案,所以我会在这里留下一个,这样也许我可以稍后找到它。
如果您使用的是双因素身份验证,那么指定用户名/密码甚至不起作用——您的访问被拒绝。但您可以使用应用程序访问令牌,并使用Git的凭据助手为您缓存该令牌。以下是相关链接:
设置命令行以使用2-factor auth(搜索标题为“它如何为命令行Git工作?”的部分)凭据缓存
我不记得我是在哪里看到的,但当你被要求输入用户名时,你就会在那里粘贴应用程序访问令牌。然后将密码留空。它在我的Mac上运行。