【问题标题】:How can I automatically accept what git rebase --interactive presents to me?如何自动接受 git rebase --interactive 呈现给我的内容?
【发布时间】: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


【解决方案1】:

在运行 git rebase 之前将环境变量 EDITOR 设置为 true 将使其自动接受显示的更改。

【讨论】:

  • 您可以使用GIT_EDITOR 来防止意外弄乱其他任何东西,尽管它应该在子shell 中运行,所以没有实际意义。您也可以将其设为别名:rbas = '!export GIT_EDITOR=true; git rebase --interactive --autosquash',或者对于您的 python 脚本,只需在 system 的调用中设置环境变量作为对 git rebase 的调用。
猜你喜欢
  • 1970-01-01
  • 2019-11-17
  • 1970-01-01
  • 2019-02-18
  • 2012-09-05
  • 1970-01-01
  • 2014-04-18
  • 2020-11-03
  • 1970-01-01
相关资源
最近更新 更多