3

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

如何摆脱每行输出之前的“远程:”文本?它比较分散注意力。(我知道这是可能的,因为我在实践中看到过,我只是不知道它是如何完成的。)

4

1 回答 1

4

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

也就是说,没有办法关闭前缀,但它们都被写入标准错误。你可以重定向/捕获/过滤git push的标准错误来做你想做的事。

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

git push ... 2>&1 | sed -e 's/^remote: //'

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

于 2010-07-03T09:45:55.203 回答