我最近切换到将我的存储库同步到GitHub上的https://(由于防火墙问题),它每次都会要求输入密码。
有没有办法缓存凭据,而不是每次git推送时都进行身份验证?
我最近切换到将我的存储库同步到GitHub上的https://(由于防火墙问题),它每次都会要求输入密码。
有没有办法缓存凭据,而不是每次git推送时都进行身份验证?
当前回答
如果你不想像Mark所说的那样以明文形式存储密码,你可以使用不同的GitHub URL进行抓取,而不是推送。在配置文件中的[远程“原点”]下:
url = git://github.com/you/projectName.git
pushurl = git@github.com:you/projectName.git
当您推送时,它仍然会要求输入密码,但当您获取时,它不会要求输入密码。
其他回答
你可以使用
git config credential.helper store
当您下次使用pull或push输入密码时,它将以明文形式存储在文件.git凭据中(有点不安全,但只需将其放入受保护的文件夹中)。
如本页所述:
git凭证存储
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上增加负载的最后手段。
如果你不想像Mark所说的那样以明文形式存储密码,你可以使用不同的GitHub URL进行抓取,而不是推送。在配置文件中的[远程“原点”]下:
url = git://github.com/you/projectName.git
pushurl = git@github.com:you/projectName.git
当您推送时,它仍然会要求输入密码,但当您获取时,它不会要求输入密码。
您可以使用凭据助手。
git config --global credential.helper 'cache --timeout=x'
其中x是秒数。
您还可以编辑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