当我运行的git克隆像往常一样,我看到:如何将`git clone`的完整输出重定向到一个文件?
$ git clone https://github.com/bensmithett/webpack-css-example
Cloning into 'webpack-css-example'...
remote: Counting objects: 179, done.
remote: Total 179 (delta 0), reused 0 (delta 0), pack-reused 179
Receiving objects: 100% (179/179), 24.07 KiB | 0 bytes/s, done.
Resolving deltas: 100% (79/79), done.
Checking connectivity... done
然而,当我试图将其重定向到一个文件,我只看到这一点:
Cloning into 'webpack-css-example'...
这里是我的尝试:
$ git clone https://github.com/bensmithett/webpack-css-example 2>&1 | tee out.log
$ cat out.log
Cloning into 'sample-data'...
我在Node.js的试了一下为好,它做同样的事情:
const fs = require('fs');
const child = spawn('git clone https://github.com/bensmithett/webpack-css-example');
child.stdout.on('data', function(data){
console.log(String(data));
});
child.stderr.on('data', function(data){
console.log(String(data));
});
// Cloning into 'webpack-css-example'...
为什么所有的remote:
等东西没有通过管道连接到stdin/stderr?有什么方法可以捕获输出吗?如果没有,发生了什么事情使得输出显示在终端中,但它没有通过stdout或stderr传递?
A
回答
6
默认情况下,仅当标准错误流指向终端时,Git才会显示克隆进度。由于您将其重定向到管道,输出流不再连接到终端。因此,为了捕获输出,您需要添加--progress
参数来强制执行进度状态,例如,
git clone --progress https://github.com/foo/bar 2> out.log
参见:man git-clone
--progress
进展状态被默认报告了标准错误流,当它被连接到末端,除非指定
-q
。即使标准错误流未定向到终端,此标志也会强制进度状态。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2015-01-27 oracle slient静默安装并配置数据库及仅安装数据库不配置数据库shell
2015-01-27 oracle db_unnqiue_name db_name sid_name instance_name service_name
2015-01-27 oracle 配置监听