对于我正在编写的python脚本(在Windows 7上使用Python 2.7(,我应该能够修改具有给定提交的分支,即如果缺少提交,则添加它(樱桃选择(,如果它已经存在,则将其还原。
显然 revert 还没有被包装在 gitpython 的 Repo 类中,所以我尝试直接使用 Git:
repo.git.revert(reference)
其中reference
是repo.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()
表示形式。
它似乎有效。