首页 > 解决方案 > 当 stdout 和 stderr 都被重定向时,为什么 git 仍然打印到屏幕上?

问题描述

我想静音我的 CI 系统中使用的 git push 命令的输出,这可能会泄漏敏感信息。

命令是:

git --quiet push > /dev/null 2>&1

所以它不应该在屏幕上打印任何东西。但是Password for 'https://xxxx@github.com':当身份验证失败时它仍然会打印。

这怎么会发生以及如何使其静音?

更新:虽然我不确定,但我猜是 git 调用getpass()或类似的直接写入的东西/dev/tty

标签: gitshellcommand-line

解决方案


为了防止密钥记录和解决重定向密码提示是通过完成的/dev/tty。看看这是如何在 Python 的getpass中完成的。


推荐阅读