【问题标题】:Redirect only error of git command to a log file仅将 git 命令的错误重定向到日志文件
【发布时间】:2014-11-24 19:41:59
【问题描述】:

我正在编写一个脚本,它使用git fetch --all && git fetch --all --tags 来获取所有遥控器的所有分支和标签。

我想要做的是,忽略/不显示获取输出,但如果获取失败,那么做一些事情(比如将错误消息写入日志文件并邮寄)。如果命令失败,如何忽略正常输出但只将错误写入日志文件?

操作系统:CentOS 6.5

git: 2.1.0-rc1

谢谢!

更新-1

git-fetch 即使在成功获取时也会写入 stderr。所以如果我这样做了

git fetch a.j 1>success 2>errlog,然后即使成功获取,我也会在错误文件中得到这个:

来自 xx.xx.xx.xx:user.name/repo

  • [新分支] for/lib.base/core -> a.j/for/lib.base/core

  • [新分支] for/master/lib.base_core -> a.j/for/master/lib.base_core

  • [新分支] for/master/memmgr -> a.j/for/master/memmgr

【问题讨论】:

    标签: git logging error-handling git-fetch


    【解决方案1】:

    您可以使用 Unix stderr 描述符 2 将错误捕获到文件中:

    git fetch --all && git fetch --all --tags 1>/dev/null 2>error.log
    

    1>/dev/null 是正常的标准输出,而 2>error.log 将错误记录到 error.log 文件中。

    【讨论】:

    • 您的解决方案在正常用例中运行良好。但git-fetch 发送也在标准错误上创建的新分支列表。因此,即使成功获取,上述命令也会写入 error.log。
    猜你喜欢
    • 2010-09-18
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    相关资源
    最近更新 更多