沉默git rebase --interactive的“如何继续”消息

4
我已经编写了一个脚本来自动化使用GIT_SEQUENCE_EDITOR=sed ...s/pick/edit/...编辑指定提交的git rebase --interactive
我该如何防止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 documentation,我尝试了:

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

我还尝试禁用了 advice.resolveConflictadvise.detachedHead

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

1个回答

4

无论是git-rebase--preserve-merges.sh(调用warn ())还是sequencer.c,都没有提供任何选项来防止显示该警告。

您可以在本地修改git-rebase--preserve-merges.sh,但这不是可移植的(此外,从Git 2.19开始,git rebase正在被重写为C语言

或者您可以提交补丁,添加一个新的设置来静音该警告。


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

你最好通过你的钩子脚本精确匹配并清除它。
可能需要分两步进行:

  1. 匹配^Stopped at [[:xdigit:]]+.*$并在匹配时将其删除;
  2. 如果匹配并删除,则匹配整个随后的横幅并删除。

(尽管kostix建议使用比bash更高级的语言来完成此操作)


@tom-hale,这条消息似乎大部分是静态的,所以我建议你最好通过你的钩子脚本完全匹配并清除它。可能需要分两步来完成:1)匹配^Stopped at [[:xdigit:]]+.*$,如果匹配成功,则将其删除;2)如果匹配并删除成功,则匹配整个后续横幅并删除。 - kostix
@tom-hale,如果可能的话,最好使用一种真正的编程语言来编写您的钩子,而不是使用 bash,这样可以避免一些繁琐的过程。我认为Python完全可以胜任这个任务。 - kostix
@kostix 谢谢。我已经将您的评论包含在答案中以增加可见性。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接