Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用远程分支拉、推_Python_Git_Gitpython - Fatal编程技术网

Python 如何使用远程分支拉、推

Python 如何使用远程分支拉、推,python,git,gitpython,Python,Git,Gitpython,我正在尝试自动化一个更改过程,该过程当前创建的源代码可以手动推送到Git。我正在尝试使用以下方法包装该代码: 当我试着运行这个时,我得到了 回溯(最近一次呼叫最后一次): 文件“git_test2.py”,第33行,在 回购提交(“提交变更”) 不良对象:636f6d6d6974206368616e676573 脚本能够提取远程存储库,但在提交时失败。有更好的方法吗?您不能对空存储库进行提交。你只能推/拉它们。通过平行思考,您将如何在本地执行此操作。试着克隆一个简单的回购协议并执行这些操作,它们

我正在尝试自动化一个更改过程,该过程当前创建的源代码可以手动推送到Git。我正在尝试使用以下方法包装该代码:

当我试着运行这个时,我得到了

回溯(最近一次呼叫最后一次):

文件“git_test2.py”,第33行,在

回购提交(“提交变更”)

不良对象:636f6d6d6974206368616e676573


脚本能够提取远程存储库,但在提交时失败。有更好的方法吗?

您不能对空存储库进行提交。你只能推/拉它们。通过平行思考,您将如何在本地执行此操作。试着克隆一个简单的回购协议并执行这些操作,它们不会起作用

我对pythonicgit绑定并不十分熟悉,但可以想象,您需要克隆一个工作的存储库,有选择地签出一个给定的分支而不是主分支,完成您的工作,针对这些内容调用git add,然后提交

此外,repo.untracked_文件是一个no op,它只是列出它们,而不是添加它们

老实说,它看起来像是你在没有真正阅读它所说的内容的情况下盲目地复制粘贴的内容

例如,您需要操纵索引对象

index = repo.index
for ( path, stage ), entry in index.entries.iteritems: pass
index.add(['SOMEFILE'])
new_commit = index.commit("YOUR COMMIT MESSAGE")
#do somethign with new commit    
我发现了另一个例子

import git
repo = git.Repo( '/home/me/repodir' )
print repo.git.status()
# checkout and track a remote branch
print repo.git.checkout( 'origin/somebranch', b='somebranch' )
# add a file
print repo.git.add( 'somefile' )
# commit
print repo.git.commit( m='my commit message' )
# now we are one commit ahead
print repo.git.status()
# now push

您正在使用的某些函数可能无法按预期的方式工作。通常,
Repo
方法与同名的
git
子命令不同

  • 由于存储库中没有名为“提交更改”的提交,因此会引发异常

  • 在存储库目录结构中名为
    http:
    的目录中,这很可能不是您想要的

如果您试图克隆远程存储库,可以通过一行代码实现:

repo = Repo.clone_from("http://user:pass@git/repo.git", "/tmp/test/repo")

有关如何使用GitPython的详细信息,请参阅。

能否粘贴一个回溯,以显示在代码中的何处出现错误?啊,回想起来,对克隆进行拉取是否更合适,然后进行更改、提交和推送?不,您需要克隆,但不应该使用裸存储库。另外,您的其他用法都是假的。请看我的更新。您可以在裸repos上使用gitpython。您也可以对它们创建提交,但只能提交到
HEAD
分支。
repo = Repo.clone_from("http://user:pass@git/repo.git", "/tmp/test/repo")