如何使用 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()表示形式。

它似乎有效。

最新更新