如何摆脱 git 中 post-receive 返回的每一行中出现的“remote:”消息?

dku*_*nko 6 git git-post-receive

我在 git 中创建了一个 post-receive 挂钩。钩子将消息输出到屏幕,这些消息被发送回执行推送的 git 客户端,然后输出回来。

如何去掉每行输出之前的“remote:”文本?这是相当分散注意力的。(我知道这是可能的,因为我在实践中见过它,我只是不知道它是如何完成的。)

Chr*_*sen 6

注意:前缀对于避免将来自远程系统的消息误认为来自本地系统的消息很重要。

也就是说,没有办法关闭前缀,但它们都会写入 stderr。您可以重定向/捕获/过滤git Push的 stderr来执行您想要的操作。

一个粗略的做法可能是这样的:

git push ... 2>&1 | sed -e 's/^remote: //'
Run Code Online (Sandbox Code Playgroud)

它将 stdout 发送到管道并使 stderr 转到相同的位置。在管道的另一端,sed读取组合输出并删除所有remote:前缀。这应该没问题,因为我们不太可能remote:在标准输出流中看到前缀。像这样组合 stdout 和 stderr 对于交互式使用来说通常是可以接受的(因为它们可能无论如何都会进入同一个 tty 设备),但对于在自动化上下文(例如脚本)中使用可能不是一个好主意。