使用gitpython使用HTTPS克隆私有仓库

6

我正在使用gitpython通过HTTPS克隆一个git仓库。如果该项目是私有仓库,则会提示输入用户名和密码。我应该如何以Pythonic的方式与提示交互,以传递用户名和密码变量?

from git import Repo

HTTPS_REMOTE_URL = 'https://github.com/username/private-project'
DEST_NAME = 'https-cloned-private-project'
cloned_repo = Repo.clone_from(HTTPS_REMOTE_URL, DEST_NAME)

运行此代码的输出结果:
$ python example.py
Username for 'https://github.com': example
Password for 'https://example@github.com': 

我知道可以将用户名和密码包含在URL中:
HTTPS_REMOTE_URL = 'https://username:password@github.com/username/private-project'

然而,我无法提前知道这是否为私有存储库。
1个回答

12

当需要进行两步验证(2FA)时,使用 GitHub 访问令牌而不是用户名和密码对我有效:

HTTPS_REMOTE_URL = 'https://<access_token>:x-oauth-basic@github.com/username/private-project'


此代码仅适用于公共存储库,而不适用于私有存储库。错误:远程:找不到存储库。 - Tushar Niras
1
@TusharNiras 实际上它确实独立于仓库类型而运作。如果该仓库不是你的,你需要接收邀请。 - Vinicius Mesel
@ViniciusMesel是正确的。当Github响应“Error: remote: Repository not found”时,实际上是状态码404的意思,这意味着仓库不存在(显式解释),或者该用户无法访问此仓库(隐式解释,因为GitHub不应告诉您私有仓库是否存在)。 - shawnzhu
我遇到了与@TusharNiras相同的问题。 我能够在我的机器上使用相同的命令克隆存储库,但无法通过我的Python脚本实现。 - Aakash Singhal
请查看此链接:https://teamdynamix.umich.edu/TDClient/47/LSAPortal/KB/ArticleDet?ID=1517 - Koo

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