我目前在尝试使用GitPython和一个带有密码短语的SSH密钥(使用Python 3.5.2)克隆远程存储库。然而,文档在这方面并没有提供很多帮助信息:
“您还可以使用Git命令上的新上下文管理器指定每个调用的自定义环境,例如使用特定的SSH密钥。以下示例适用于从v2.3开始使用的git:”
从中我得出的结论是,我可以通过ssh_cmd变量加载特定的密钥,GitPython将加载它,但是如何输入密码?用户会收到提示吗?此外,我正在尝试从远程克隆,上面的代码假定您已经这样做或者首先创建了一个本地仓库?对我来说仍不是很清楚。
“您还可以使用Git命令上的新上下文管理器指定每个调用的自定义环境,例如使用特定的SSH密钥。以下示例适用于从v2.3开始使用的git:”
ssh_cmd = 'ssh -i id_deployment_key'
with repo.git.custom_environment(GIT_SSH_COMMAND=ssh_cmd):
repo.remotes.origin.fetch()
从中我得出的结论是,我可以通过ssh_cmd变量加载特定的密钥,GitPython将加载它,但是如何输入密码?用户会收到提示吗?此外,我正在尝试从远程克隆,上面的代码假定您已经这样做或者首先创建了一个本地仓库?对我来说仍不是很清楚。
你认为我想做的事情可能吗?如果可能,你能提供一些例子吗?我希望看到一个简单的工作流:
- 克隆远程存储库
- 添加更改
- 提交
- 推送
所有这些操作都需要一个有密码的SSH密钥。
我还应该提到,我在Windows 7机器上进行这个操作,pexpect与之不兼容。
GIT_ASKPASS
环境变量指向它。更多信息可以在这里找到:https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables。 - ByronGIT_SSH
变量,并设置它以为您提供凭据。 - Byron