从Bash脚本我想提供密码。我尝试过以下方法:
echo 'mypass' | git pull
git pull < 'mypass'
git pull < echo 'mypass'
似乎无效。
答案 0 :(得分:5)
gitcredentials
就是答案:
<强>描述强>
Git有时需要用户提供凭据才能执行操作;例如,它可能需要请求用户名和密码才能通过HTTP访问远程存储库。本手册介绍了Git用于请求这些凭据的机制,以及一些避免重复输入这些凭据的功能。
[...]
申请证书
如果没有定义任何凭证助手,Git将尝试以下策略向用户询问用户名和密码:
- 如果设置了
GIT_ASKPASS
环境变量,则调用该变量指定的程序。在命令行上为程序提供了一个合适的提示,并从其标准输出中读取用户的输入。- 否则,如果设置了
core.askPass
配置变量,则使用其值如上所述。- 否则,如果设置了
SSH_ASKPASS
环境变量,则使用其值如上所述。- 否则,将在终端上提示用户。
醇>
[...]
另一方面,凭证助手是外部程序,Git可以从中请求用户名和密码;它们通常与操作系统或其他程序提供的安全存储接口。您可能还安装了第三方帮助程序;在
credential-*
的输出中搜索git help -a
,并查阅各个帮助者的文档。选择帮助程序后,您可以通过将其名称放入credential.helper
变量来告诉Git使用它。
git help -a | grep credential-*
显示以下帮助程序:
credential remote
credential-cache remote-ext
credential-cache--daemon remote-fd
credential-osxkeychain remote-ftp
credential-store remote-ftps
答案 1 :(得分:3)
应该可以在远程定义中包含密码(即https://user:password@server),然后您不需要为每次拉动提供密码。与 How do I provide a username and password when running “git clone git@remote.git”? 中建议的解决方案非常相似。
我不确定这是否与您的用例匹配,但另一种有效方法是使用SSH而不是HTTPS并使用GitHub存储您的公钥。在这种情况下,您不需要输入任何凭据......
答案 2 :(得分:1)
将输入提供给Bash脚本的主要技巧是“Automatically enter input in command line”:
echo 'mypass' | git pull
# or
printf 'mypass\n' | git pull
从Git 1.8.3开始,我更喜欢使用 Git credential netrc helper 来获取并为我提供正确的密码。
答案 3 :(得分:1)
创建包含内容的文件git_password.sh
#!/bin/sh
exec echo "$GIT_PASSWORD"
将密码分配给GIT_PASSWORD环境变量
$ GIT_PASSWORD=your_password
使用GIT_ASKPASS环境变量执行git命令。它将强制输入密码提示并作为回调执行git_password.sh:
$ GIT_ASKPASS=./git_password.sh git clone $REPO