使用脚本克隆私有Github仓库

6
如何使用Python从Github克隆私有存储库?
我找到了一些有关git和python的好资料,但是我才几天前开始学习Python。

什么阻止你调用“git clone ...”? - Thorbjørn Ravn Andersen
4个回答

5
只需使用subprocess.check_call运行git命令即可:
import subprocess
subprocess.check_call(["git", "clone", ...])

3
有一个库叫做 libgit2,它可以将 git 用作共享库。更有帮助的是它的 Python 绑定库 pygit

要使用 pygit 克隆一个仓库,可以这样做:

>>> from pygit2 import clone_repository
>>> repo_url = 'git://github.com/libgit2/pygit2.git'
>>> repo_path = '/path/to/create/repository'
>>> repo = clone_repository(repo_url, repo_path) # Clones a non-bare repository
>>> repo = clone_repository(repo_url, repo_path, bare=True) # Clones a bare repository

你可以在基于存储库的文档这里查看。

2
为了清楚明白,我想编写一个Python脚本,可以将GitHub私有仓库克隆到我的电脑上。我只是想找到如何操作以及相应的指南。 - Shakavkav
@user3914163 在这种情况下,最简单的方法是从Python中直接调用git二进制文件,正如Messa所写。 - peterh
5
你如何进行认证?这个问题是关于私有仓库的,是吗? - Andreas Mueller

2

由于该存储库是私有的,因此还没有答案。我通常的做法是创建一个专门用于脚本的SSH密钥对,并将公钥上传到GitHub(或您正在使用的任何托管服务)。

您可以通过运行以下命令让脚本使用私钥:

GIT_SSH_COMMAND='ssh -i private_key_file' git clone git@github.com:user/repo.git

0
import pygit2
repo_url = 'git://github.com/libgit2/pygit2.git'
repo_path = '/path/to/create/repository'
callbacks = pygit2.RemoteCallbacks(pygit2.UserPass("<your-personal-token>", 'x-oauth-basic'))
repo = pygit2.clone_repository(repo_url, repo_path, callbacks=callbacks)

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