我可以在环境变量中保存git凭据吗?
问题描述:
我想创建一个非常简单的shell脚本,这将最终被其他应用程序调用,更新一个本地的Git仓库:我可以在环境变量中保存git凭据吗?
#!/bin/bash
cd $1
sudo git pull
当执行这个我问凭据(我从私人BitBucket存储库中拉出)。
我可以(简要)将凭证存储在环境变量中吗?
#!/bin/bash
export GIT_USERNAME=<user>
export GIT_PASSWORD=<pass>
cd $1
sudo git pull
上述不起作用。会有什么?我可以通过编程修改原始网址,但似乎有点过分。
答
Git不使用凭据,它依赖于正在使用的传输。
答
我知道这是很老的问题,但如果你真的需要通过用户名和密码的HTTP基本认证,你可以只设置助手这样的:
git config credential.helper '!f() { sleep 1; echo "username=${GIT_USER}\npassword=${GIT_PASSWORD}"; }; f'
更新:我已经添加sleep 1
的功能。在某些环境中,由于竞态条件可能需要它。我有两台运行Debian Jessie的虚拟机。它们具有相同的体系结构,但CPU和CPU数量不同。在其中一台机器上,帮助器工作正常,没有sleep
。另一方面则不是。经过几个小时的调试后,我运行strace
以查看发生了什么。它神奇地开始工作。 strace
只是让git慢了一点。
+0
非常感谢!适用于基于HTTP的推送!对于SSH,我也会为密钥投票。 – 2017-04-21 12:27:13
git不使用凭据,它依赖于正在使用的传输。你使用SSH的Git?如果是这样,你应该看看SSH密钥。 – 2011-12-16 16:01:13