4

编写了一个脚本来自动git rebase --interactive编辑指定的提交,使用GIT_SEQUENCE_EDITOR=sed ...s/pick/edit/...

如何防止git rebase --interactive打印出“有用的”消息:

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命令本身和/或任何{pre,post}-rebase钩子的任何错误,所以 2>/dev/null不是一个选项。

git config 文档中,我尝试过:

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

我也试过禁用advice.resolveConflictand advise.detachedHead

下似乎没有任何有用的选项 rebase.*

4

1 回答 1

4

git-rebase--preserve-merges.sh调用warn ())和都sequencer.c没有提供任何选项来阻止显示该警告。

您可以git-rebase--preserve-merges.sh在本地进行修改,但这不会是可移植的(git rebase而且无论如何都会用 C 重写,从 Git 2.19 开始

或者,您可以提交带有新设置的补丁程序,以使该警告静音。


或者,正如kostix在评论中建议的那样,您需要处理命令的输出以过滤掉您不需要的内容:

你最好的选择可能是通过你的钩子脚本完全匹配它并消灭它。
可能分两步执行此操作:

  1. 如果匹配则匹配^Stopped at [[:xdigit:]]+.*$并删除它;
  2. 如果匹配并删除,则匹配整个以下横幅并删除(如果匹配)。

(虽然 kostix 建议使用比 bash 更高级的语言来做到这一点)

于 2018-09-14T04:44:21.013 回答