我希望能够在Bash脚本中提供一个密码。我已经尝试了以下内容:
echo 'mypass' | git pull
git pull < 'mypass'
git pull < echo 'mypass'
似乎没有一种方法起作用。
我希望能够在Bash脚本中提供一个密码。我已经尝试了以下内容:
echo 'mypass' | git pull
git pull < 'mypass'
git pull < echo 'mypass'
似乎没有一种方法起作用。
创建文件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
-c“core.askPass=/path/askpass.sh”
。 - akostadinovsubprocess.run(['git', 'clone', '-c', 'core.askPass='+ROOT_PATH+'\git_password.sh', 'https://username@url_to_git_repo.git'])
- frmbelzgitcredentials
就是答案:
描述
Git有时需要用户提供凭据才能执行操作;例如,它可能需要请求用户名和密码以便通过HTTP访问远程仓库。本手册描述了Git用于请求这些凭据的机制,以及一些避免重复输入这些凭据的功能。
[...]
请求凭据
如果没有定义任何凭据助手,Git将尝试以下策略来要求用户提供用户名和密码:
- 如果设置了
GIT_ASKPASS
环境变量,则调用该变量指定的程序。适当的提示会在命令行上提供给该程序,并从其标准输出读取用户的输入。- 否则,如果设置了
core.askPass
配置变量,则使用其值如上所述。- 否则,如果设置了
SSH_ASKPASS
环境变量,则使用其值如上所述。- 否则,在终端上提示用户。
[...]
另一方面,凭据助手是外部程序,Git可以从中请求用户名和密码;它们通常与操作系统或其他程序提供的安全存储接口。
您还可以安装第三方助手;在
git help -a
的输出中搜索credential-*
,并查阅各个助手的文档。选择助手后,您可以通过将其名称放入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
git help -a | grep credentials-*
should be git help -a | grep credential-*
- Cpt. Senkfusscore.askPass
,请使用 git config --global core.askPass "new-value"
。要查看配置值,请使用 git config --global core.askPass
(不带新值)。请注意,除了 --global
之外,还有 --system
范围(以及 --local
范围,但仅在克隆存储库后才能使用)。 - mihcahttps://user:password@server
就像这样,您不需要为每个拉取操作提供它。
(就像在如何在运行“git clone git@remote.git”时提供用户名和密码?中建议的解决方案一样。)
警告:更好的方法是使用SSH而不是HTTPS,并将您的公钥与GitHub存储。因为远程URL中的凭据可能会出现在命令历史记录、脚本或配置文件中,然后被他人看到。
.git/config
中作为远程URL。因此,所有访问克隆仓库的人都能看到密码。此外,这个URL很可能会再次通过网络发送以启动与远程的连接。总体而言,这种方法是最不安全的。 - mihcaecho 'mypass' | git pull
# or
printf 'mypass\n' | git pull
它的文档现在除了密码之外还提到了令牌,随着Git 2.39(2022年第四季度)的推出:
请参见提交54e95b4(由M Hickford (hickford
)于2022年11月8日提交)
(由Taylor Blau -- ttaylorr
--合并于提交dc8be39,2022年11月14日)
Documentation/gitcredentials.txt
:提到密码的替代方案签名:M Hickford
签名:Taylor Blau
“gitcredentials”现在在其手册页面中包括以下内容:Git asks for a "password", but the user might use a personal access token or OAuth access token instead.
Example:
Password for 'https://AzureDiamond@github.com':
hickford
)。gitster
-- 在 提交记录 c197977 中合并,2022年11月23日)
文档
:描述凭证生成助手的工作原理签署者:M Hickford
签署者:Taylor Blau
以前的文档只描述了存储助手。
一个具体的例子:Git Credential Manager可以通过OAuth为GitHub和GitLab生成凭据。
https://github.com/GitCredentialManager/git-credential-manager
gitcredentials
现在在其手册页面中包括以下内容:
“gitcredentials”现在在其手册页面中包括以下内容:由操作系统或其他程序提供的存储。或者,凭证生成助手可以通过某些API为特定服务器生成凭证。
如果它不支持所请求的操作(例如,只读存储或生成器),则应该默默地忽略该请求。
\n
可能是我所缺失的。密码可能已经输入了,但回车键从未按下,因此从未执行。我需要在星期一尝试一下。 - jaxprintf 'mypass\n' | git pull
并没有起作用。 - jax