【问题标题】:How do I force Git NOT to prompt for credentials如何强制 Git 不提示输入凭据
【发布时间】:2014-05-09 11:06:35
【问题描述】:

我在 Bash 脚本中使用 git clone,该脚本采用任何类型的 Git 位置(HTTPS、Git、SSH、文件系统...)并将其克隆。但是这个脚本必须在不与任何用户交互的情况下工作。更准确地说,我希望这个脚本不要暂停凭据:如果该位置需要凭据,而 git 无法自行找到它们,我希望 Git 失败。

我的脚本假设如果您没有设置正确的方法来访问这些位置而无需密码,这不是它的问题。但是,解决方案应该提供一种方法来了解失败的原因(例如输出“身份验证失败”的错误)。

我需要这种行为仅仅是因为它是一个脚本,它可以非交互方式运行(cron 作业、VM 构建......等等......)。我需要它失败,而不是冻结我的脚本等待我无法提供它的信息(并且不想)。

因此,在我目前的担忧中,我要求 git clone 失败,而不是询问凭据。

我在git clone 中没有找到任何选项来强制不要求提供凭据,最好是在身份验证错误时失败。

【问题讨论】:

  • 您是否使用 SSH 访问远程仓库?如果是这样,也许您应该将您的密钥导出到服务器以避免要求提供凭据。
  • @GMGray 我知道设置系统或 git 以在不要求凭据的情况下访问某个位置的所有方法。这是用户的问题。我的脚本的工作是克隆我给不同位置的存储库。我不希望它卡住要求提供凭据,因为它不是交互式脚本。谢谢你的评论,我会编辑我的问题,以便在这些问题上更清楚。
  • 你是如何连接的? SSH 还是 HTTP?
  • @Nilpo 两者,我需要与 git 兼容的任何 git 可克隆位置兼容。这是一个不应在位置上添加约束的脚本(如果可能)。它的工作是克隆给定的位置,如果没有交互就无法做到,则失败。

标签: git credentials git-clone non-interactive


【解决方案1】:

更新: 在 git 版本中 > 2.3:

GIT_TERMINAL_PROMPT=0 

对于以前的版本:

这是我强制失败的技巧:

GIT_ASKPASS=/bin/echo git clone ...

【讨论】:

  • 这帮助我诊断了在 vsts 构建任务中使用 git 命令时出现的问题,因为即使使用 --progress 也没有显示提示的输出。谢谢!
  • 人们可能还需要GIT_SSH_COMMAND="ssh -oBatchMode=yes" 以防止在通过 SSH 管道进行交互时出现提示。
猜你喜欢
  • 1970-01-01
  • 2018-03-04
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
相关资源
最近更新 更多