【发布时间】:2016-11-30 09:17:45
【问题描述】:
我在 github.com 上创建了一个新的存储库,然后将其克隆到我的本地机器上
git clone https://github.com/usrname/mathematics.git
我在mathematics文件夹下添加了3个新文件
$ tree
.
├── LICENSE
├── numerical_analysis
│ └── regression_analysis
│ ├── simple_regression_analysis.md
│ ├── simple_regression_analysis.png
│ └── simple_regression_analysis.py
现在,我想使用 Python 将 3 个新文件上传到我的 GitHub,更具体地说,PyGithub。这是我尝试过的:
#!/usr/bin/env python
# *-* coding: utf-8 *-*
from github import Github
def main():
# Step 1: Create a Github instance:
g = Github("usrname", "passwd")
repo = g.get_user().get_repo('mathematics')
# Step 2: Prepare files to upload to GitHub
files = ['mathematics/numerical_analysis/regression_analysis/simple_regression_analysis.py', 'mathematics/numerical_analysis/regression_analysis/simple_regression_analysis.png']
# Step 3: Make a commit and push
commit_message = 'Add simple regression analysis'
tree = repo.get_git_tree(sha)
repo.create_git_commit(commit_message, tree, [])
repo.push()
if __name__ == '__main__':
main()
我不知道
- 如何为
repo.get_git_tree获取字符串sha - 如何在第 2 步和第 3 步之间建立连接,即推送特定文件
就个人而言,PyGithub documentation 不可读。找了很久也没找到合适的api。
【问题讨论】:
-
要获得
sha,您需要使用hashlib -
@WayneWerner 这绝对不是他应该做的。
sha是由git计算得出的,如果您尝试自己计算,几乎肯定会出错。 -
我可以知道投反对票的原因吗?
-
那么,直接调用
git与它交互如何?或者使用GitPython之类的python接口,不一定是面向GitHub的?它的文档确实……非常稀少,我认为它不可用。 -
我对文档的理解是,您想要获取分支,从中获取 HEAD 提交(从中获取提交的
sha值和基础树)。有了它,调用create_git_tree传递HEAD 的树作为基础,并给它一个InputGitTreeElement列表(设置content,但单独留下sha)和你的修改。然后用你的新树调用create_git_commit。最后,您需要获取分支 ref 并将其更新为您的新提交sha。找到一些包含这个库的库可能比自己做要容易。
标签: python git github pygithub