如何使用PyGithub创建一个新的代码仓库

10

如何使用 PyGithub 在 Github 上创建新的仓库? 特别是我想知道如何使用 create_repo 方法?如何生成 AuthenticatedUser?


你是想在本地创建一个新的git仓库吗?还是想在github上创建一个新的仓库?PyGithub可以实现后者,而像pygit这样的工具可以实现前者。两者都有很好的在线文档支持。 - larsks
我正在尝试在Github上创建一个代码库。 - ustroetz
@larsks,您能否举个例子说明如何使用PyGithub在GitHub上创建一个存储库? - ustroetz
5个回答

18

我的问题的解决方案如下

g = Github(token)
user = g.get_user()
repo = user.create_repo(full_name)

14

我在试图弄清楚如何促使PyGithub在组织内创建存储库时偶然发现了这个问题,我认为它在这里是相关的。

g = Github(token)
organization = g.get_organization("org-name")
organization.create_repo(
        name,
        allow_rebase_merge=True,
        auto_init=False,
        description=description,
        has_issues=True,
        has_projects=False,
        has_wiki=False,
        private=True,
       )
完整的关键字参数列表可以在此找到:https://developer.github.com/v3/repos/#input

5
当我试图弄清如何创建一个AuthenticatedUser对象时,我偶然发现了这个问题。事实证明,当你传递任何参数给get_user时,你会得到一个NamedUser;如果你不传递参数,你将得到与创建Github对象时使用的凭据对应的AuthenticatedUser。
以下是一个最简示例:
from github import Github
g = Github("my GitHub API token")

user = g.get_user('myname')
print user
authed = g.get_user()
print authed

产量
<github.NamedUser.NamedUser object at 0x7f95d5eeed10>
<github.AuthenticatedUser.AuthenticatedUser object at 0x7f95d5684410>

一旦你拥有了一个经过身份验证的用户对象(AuthenticatedUser object),你可以按照你提供的文档中所述调用CreateRepo。


这是一个更好的答案,因为它解释了不同调用返回的内容,应该接受这个答案@ustroetz。 - Daniel
对于 create_repo() 命令,您是在用户对象上调用它吗?还是创建一个组织? - ScottyBlades
1
g = Github(username, password) gituser = g.get_user(username) repo = gituser.create_repo(name)这段代码对我来说肯定是不起作用的。 - ScottyBlades

2
要创建一个代码库,可以使用GitPython。这是有关如何初始化仓库的教程。它就像这样简单:
import git

repo_dir = os.path.join(rw_dir, 'my-new-repo')
file_name = os.path.join(repo_dir, 'new-file')

r = git.Repo.init(repo_dir)

你可以使用Dulwich创建代码仓库:

你也可以使用Dulwich来创建一个代码仓库:

from dulwich.repo import Repo
x = Repo.init("/path/to/new/repo")

完成上述步骤后,您可以使用PyGithub来访问存储库(或者使用上面提供的API):

from github import Github

g = Github("user", "password")
for repo in g.get_user().get_repos():
    print repo.name

谢谢!所以如果我理解正确的话,我首先需要在本地创建一个存储库,然后将其推送到Github?没有办法直接使用PyGithub在Github上生成存储库吗? - ustroetz
2
有一种方法使用PyGithub.Blocking.Organization.Organization.create_repo,它调用了POST /orgs/:org/repos。我没有提供它,因为我找不到可以给你链接的教程。 - runDOSrun

1

问题的答案:

通过令牌登录:

g = Github(token)

user = g.get_user()

repo = user.create_repo(repo_name)

print(repo)#To 

通过用户名和密码登录:

g = Github("user", "password")

user = g.get_user()

repo = user.create_repo(repo_name)

print(repo) 

使用自定义主机名的Github企业版。

登录到具有组织的企业版GitHub。

g = Github(base_url="https://{hostname}/api/v3", login_or_token="token")

org = g.get_organization("org name")

repo = org.create_repo(repo_name)

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