Git通过GitPython推送

时间:2017-01-24 19:07:55

标签: python git push gitpython

我在Python中使用此代码(使用“import git”):

error: reference to 'log' is ambiguous log(_A1 __lcpp_x) _NOEXCEPT {return log((double)__lcpp_x);}

note: candidate found by name lookup is 'log' log(_A1 __lcpp_x) _NOEXCEPT {return log((double)__lcpp_x);}
note: candidate found by name lookup is 'log' inline _LIBCPP_INLINE_VISIBILITY long double log(long double __lcpp_x) _NOEXCEPT {return logl(__lcpp_x);}
note: candidate found by name lookup is 'log' inline _LIBCPP_INLINE_VISIBILITY float       log(float __lcpp_x) _NOEXCEPT       {return logf(__lcpp_x);}
note: candidate found by name lookup is 'log' double  log(double);

现在我想推动这个提交。我已经尝试了很多但没有成功。 Python命令应与此Bash命令类似:

repo = git.Repo("my_repository")
repo.git.add("bla.txt")
repo.git.commit("my commit description")

5 个答案:

答案 0 :(得分:2)

您可以尝试以下操作。它可能会解决您的问题......

repo.git.pull('origin', new_branch)
repo.git.push('origin', new_branch)

答案 1 :(得分:1)

以下是使用GitPythongit addgit commit然后git push的代码。

使用pip install gitpython安装GitPython

from git import Repo

PATH_OF_GIT_REPO = r'path\to\your\project\folder\.git'  # make sure .git folder is properly configured
COMMIT_MESSAGE = 'comment from python script'

def git_push():
    try:
        repo = Repo(PATH_OF_GIT_REPO)
        repo.git.add(update=True)
        repo.index.commit(COMMIT_MESSAGE)
        origin = repo.remote(name='origin')
        origin.push()
    except:
        print('Some error occured while pushing the code')
    finally:
        print('Code push from script succeeded')       

git_push()

答案 2 :(得分:0)

查看gitpython http://gitpython.readthedocs.io/en/stable/tutorial.html的文档页面。您必须使用origin = repo.create_remote('origin', repo.remotes.origin.url)

之类的内容定义远程仓库

然后origin.pull()

我会在#34;处理遥控器"

部分的文档中查看整个示例。

以下是文档

中的完整示例
empty_repo = git.Repo.init(osp.join(rw_dir, 'empty'))
origin = empty_repo.create_remote('origin', repo.remotes.origin.url)
assert origin.exists()
assert origin == empty_repo.remotes.origin == empty_repo.remotes['origin']
origin.fetch()                  # assure we actually have data. fetch() returns useful information
# Setup a local tracking branch of a remote branch
empty_repo.create_head('master', origin.refs.master)  # create local branch "master" from remote "master"
empty_repo.heads.master.set_tracking_branch(origin.refs.master)  # set local "master" to track remote "master
empty_repo.heads.master.checkout()  # checkout local "master" to working tree
# Three above commands in one:
empty_repo.create_head('master', origin.refs.master).set_tracking_branch(origin.refs.master).checkout()
# rename remotes
origin.rename('new_origin')
# push and pull behaves similarly to `git push|pull`
origin.pull()
origin.push()
# assert not empty_repo.delete_remote(origin).exists()     # create and delete remotes

答案 3 :(得分:0)

我遇到了同样的问题。我通过调用

解决了这个问题
repo.git.push("origin", "HEAD:refs/for/master")

答案 4 :(得分:0)

这可以通过使用索引(documented a little bit here)来实现,例如:


from git import Repo
repo = Repo('path/to/git/repo')  # if repo is CWD just do '.'

repo.index.add(['bla.txt'])
repo.index.commit('my commit description')
origin = repo.remote('origin')
origin.push()