5

我正在为我的框架的命令行工具编写部署命令。它使用 git 进行部署。

我有一条线我这样做:

exec("git push {$remote} {$branch}:{$branch}", $shell_output, $status);

我想将 push 的输出放在里面$shell_output,但它没有发生(输出只显示在终端上)。我认为因为git是一个外部程序,因此会创建一个新的输出流?

我尝试使用此处描述的输出缓冲区无济于事。我敢肯定 SO 上有一些东西可以回答这个问题,但经过大量挖掘后无法找到它。

所以任何帮助将不胜感激:)

4

1 回答 1

10

git 将其输出发送到 STDERR 而不是 STDOUT,因此您需要使用以下内容重定向它:

git push REPO --progress 2>&1

或文件:

git push REPO --progress > /path/to/file 2>&1

于 2012-11-15T00:09:11.293 回答