沉默 git rebase --interactive 的 "how to proceed" 消息

Silence git rebase --interactive's "how to proceed" message

我已经 written a script 自动执行 git rebase --interactive 以使用 GIT_SEQUENCE_EDITOR=sed ...s/pick/edit/...

编辑指定的提交

如何防止 git rebase --interactive 打印出 "helpful" 消息:

Stopped at 307c446...  Add candy-text
You can amend the commit now, with

  git commit --amend 

Once you are satisfied with your changes, run

  git rebase --continue

这条消息被打印到 STDERR,我仍然想看到 rebase 命令本身的任何错误 and/or 任何 {pre,post}-rebase 挂钩,所以 2>/dev/null 不是'没有选择。

来自 git config documentation,我试过:

git -c advice.statusHints=false rebase --quiet --interactive --autostash --autosquash "$commit"~

我也试过禁用 advice.resolveConflictadvise.detachedHead

下面好像没有有用的选项 rebase.*.

两者 git-rebase--preserve-merges.sh (which calls warn ()) and the sequencer.c 都没有提供任何选项来阻止显示该警告。

您可以在本地修改 git-rebase--preserve-merges.sh,但不能移植(加上

或者您可以 submit a patch 使用新设置来关闭该警告。


或者,如kostix suggests ,您需要处理命令的输出以过滤掉不需要的内容:

your best bet may be to match it exactly by your hook script and wipe out.
Possibly do this in two steps:

  1. match ^Stopped at [[:xdigit:]]+.*$ and remove it if matched;
  2. if matched and removed, match the whole following banner and remove, if matched.

(尽管 kostix 建议使用比 bash 更高级的语言)