【发布时间】:2011-04-02 16:45:42
【问题描述】:
我正在使用一个小脚本来修复过去的提交。该脚本假定对损坏的提交进行了修复,工作目录是干净的,并且在命令行上传递了损坏的提交。这是脚本的原始 Python 核心:
#!/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,所以我在这方面有点受限。
【问题讨论】:
-
我本来想说,“不要使用--interactive”,但我阅读了autosquash 的文档:“此选项仅在使用--interactive 选项时有效。”真可惜。 +1 提出一个好问题!
-
如果您想尝试一下,在 git-rebase--interactive.sh 中添加 --autoaccept 选项可能非常简单。
-
@mathepic: 可能,但是设置三个开关
--interactive、--autosquash和--autoaccept似乎是错误的——而且每个开关都只有在指定前一个时才有意义。
标签: git