如何使用gitpython恢复提交?

时间:2018-03-19 18:07:31

标签: python git gitpython

对于我正在编写的python脚本(在Windows 7上使用Python 2.7)我应该能够使用给定的提交修改分支,即如果提交丢失则添加它(樱桃选择),或者如果提交,则恢复它它已经存在了。

显然revert还没有包含在gitpython的Repo类中,所以我尝试用use Git directly

repo.git.revert(reference)

其中referencerepo.iter_commits("master")

返回的提交之一

脚本会锁定该命令并变为空闲状态;然后我必须杀死命令提示符窗口。 如果我进入工作目录并浏览存储库,我可以看到(使用git diff)执行后,即使是git log,也没有新的提交是可见的。 / p>

关于我是否以及我做错了什么的想法?

1 个答案:

答案 0 :(得分:0)

我通过手动尝试revert应用的更改来解决了这个问题。 Git抱怨工作目录中的交换文件。

所以,问题是该命令正在被执行,好像它是从终端运行的,因此等待我以某种方式编辑提交消息!所以我需要使用no-edit选项运行repo.git.revert(reference.hexsha, no_edit = True) 命令。

我将方法调用更改为:

gitpython

(请注意hexsha需要下划线作为分隔符。此外,明确使用reference属性不是必需的,因为str()将转换为其brew search intl表示反正。)

似乎有效。