繁体   English   中英

如何使用gitpython还原提交?

[英]How do I revert a commit with gitpython?

对于我正在编写的python脚本(在Windows 7上使用Python 2.7),我应该能够使用给定的提交修改分支,如果缺少提交,则将其添加(樱桃选择),如果已经存在,则将其还原。

显然,revert尚未包装在gitpython的Repo类中,因此我尝试将Git直接用于以下内容:

repo.git.revert(reference)

其中referencerepo.iter_commits("master")返回的提交之一

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

关于我是否做错什么的任何想法?

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

因此,问题在于命令的执行就像从终端运行一样,因此等我以某种方式编辑提交消息! 因此,我需要使用no-edit选项运行revert命令。

我将方法调用更改为:

repo.git.revert(reference.hexsha, no_edit = True)

(请注意, gitpython需要使用下划线作为分隔符。此外,不需要显式使用hexsha属性,因为无论如何reference都将转换为其str()表示形式。)

似乎有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM