Como envio novos arquivos para o GitHub?

Criei um novo repositório no github.com e depois o clonei na minha máquina local com

git clone https://github.com/usrname/mathematics.git

Adicionei 3 novos arquivos na pastamathematics

$ tree 
.
├── LICENSE
├── numerical_analysis
│   └── regression_analysis
│       ├── simple_regression_analysis.md
│       ├── simple_regression_analysis.png
│       └── simple_regression_analysis.py

Agora, eu gostaria de enviar três novos arquivos para o meu GitHub usando Python, mais especificamente,PyGithub. Aqui está o que eu tentei:

#!/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()

Eu não sei

como obter a stringsha pararepo.get_git_treecomo faço para estabelecer uma conexão entre as etapas 2 e 3, ou seja, enviar arquivos específicos

Pessoalmente,Documentação do PyGithub não é legível. Não consigo encontrar a API certa depois de pesquisar por muito tempo.

questionAnswers(6)

yourAnswerToTheQuestion