我正在使用一個小腳本修復過去的提交。該腳本假定已停止提交的修復程序,工作目錄是乾淨的,並且在命令行上傳遞了損壞的提交。下面是腳本的原始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