我正在使用一个小脚本修复过去的提交。该脚本假定已停止提交的修复程序,工作目录是干净的,并且在命令行上传递了损坏的提交。下面是脚本的原始Python的核心:如何自动接受git rebase --interactive提供给我的内容?
#!/usr/bin/env python
import os
import sys
broken_commit = sys.argv[1]
logmsg = os.popen("git log --format=%%s %s~1..%s" % (broken_commit, broken_commit), 'r').read().strip()
os.system("git commit --message \"fixup! %s\"" % logmsg)
os.system("git rebase --interactive --autosquash %s~2" % broken_commit)
在这一点上,我呈现的编辑,只需要确认(在我的情况:wq
)所示的变化。我怎样才能避免这最后一步?我希望git rebase
一行可以继续,而不必让我有机会编辑所示的步骤。
我听说你可以通过EDITOR环境变量设置特殊的脚本来实现。不过,我在Windows上使用msysGit,所以我在这方面有点有限。
我要说的是,“只要放弃 - 交互式”,但是我阅读了autosquash的文档:“此选项仅在使用--interactive选项时有效。”游民。 +1一个很好的问题! – 2010-08-23 15:32:23
如果你想尝试一下,那么可以非常简单地将--autoaccept选项添加到git-rebase--interactive.sh中。 – alternative 2010-08-23 17:09:18
@mathepic:很可能,但有三个开关'--interactive',' - autosquash'和'--autoaccept'似乎是错误的 - 并且它们中的每一个只有在指定前任时才有意义。 – 2010-08-25 08:01:00