【问题标题】:Silence git rebase --interactive's "how to proceed" message沉默 git rebase --interactive 的“如何进行”消息
【发布时间】:2019-02-18 20:29:25
【问题描述】:

我已经 written a script 自动化 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 documentation,我试过了:

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

我也尝试禁用 advice.resolveConflictadvise.detachedHead

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

【问题讨论】:

    标签: git git-rebase git-config git-interactive-rebase


    【解决方案1】:

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

    您可以在本地修改git-rebase--preserve-merges.sh,但这将无法移植(加上git rebase is being rewritten in C anyway, starting with Git 2.19

    或者您可以submit a patch 使用新设置,允许静音该警告。


    或者,正如kostix 建议的in the comments,您需要处理命令的输出以过滤掉您不需要的内容:

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

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

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

    【讨论】:

    • @tom-hale,消息似乎大部分是静态的,所以我想说你最好的选择可能是通过你的钩子脚本完全匹配它并清除。可能分两步执行此操作:1)匹配^Stopped at [[:xdigit:]]+.*$,如果匹配则将其删除; 2) 如果匹配并删除,则匹配整个以下横幅并删除,如果匹配。
    • @tom-hale,看起来,如果可能的话,最好使用真正的编程语言而不是 bash 来编写你的钩子以减少跳跃次数。我会说 Python 应该很好地完成任务。
    • @kostix 谢谢。我已将您的评论包含在答案中以提高知名度。
    猜你喜欢
    • 1970-01-01
    • 2012-06-05
    • 2019-11-17
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    相关资源
    最近更新 更多