如何强制Git不提示凭据

14
我正在使用 git clone 在 Bash 脚本中,该脚本接受任何类型的 Git 位置(HTTPS、Git、SSH、文件系统等)并将其克隆。但是这个脚本必须在没有任何用户交互的情况下工作。更确切地说,我希望这个脚本不会为凭据暂停:如果位置需要凭据,并且 git 找不到它们,我希望 Git 失败。
我的脚本假设如果您没有设置访问这些位置的正确方式而无需密码,则不是它的问题。但是,解决方案应该提供一种知道失败原因的方法(例如输出一个带有“认证失败”的错误)。
我需要这种行为,因为它是一个脚本,需要以非交互方式运行(cron job、VM 构建等)。我需要它失败,而不是冻结我的脚本,等待我无法提供(也不想提供)的信息。
因此,在我的当前问题中,我要求 git clone 失败,而不是询问凭据。
我没有在 git clone 中找到任何选项来强制不要请求凭据,并最好在身份验证错误时失败。

你是否正在使用SSH访问远程仓库?如果是的话,也许你应该将你的密钥导出到服务器上,以避免请求凭据。 - Gabriel M
@GMGray 我知道所有设置系统或git以获取访问位置而不要求凭据的方法。这是用户的问题。我的脚本的工作是克隆我给定的各种位置的存储库。我不希望它因为不是交互式脚本而被卡在请求凭据的过程中。谢谢你的评论,我会编辑我的问题以更清楚地表达这些问题。 - vaab
你是用什么方式连接的?SSH还是HTTP? - Nilpo
@Nilpo,我需要与任何git兼容的可克隆位置兼容。如果可能的话,这是一个不应该对位置添加约束的脚本。它的工作将是克隆给定的位置,并在无法进行交互式操作时失败。 - vaab
1个回答

18

更新: 在 git 版本大于 2.3:

GIT_TERMINAL_PROMPT=0 

之前的版本:

这是我迫使失败的诀窍:

GIT_ASKPASS=/bin/echo git clone ...

这帮助我诊断了一个问题,当在VSTS构建任务中使用git命令时,即使使用--progress,提示的输出也没有显示。谢谢! - GeekyDeaks
6
当使用SSH管道进行交互时,有时需要添加GIT_SSH_COMMAND="ssh -oBatchMode=yes"以防止提示。 - jdknight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接