什么控制着git checkout的反馈?

7
有时候,git checkout 命令会给出进度反馈:
$ git checkout develop
Checking out files: 100% (10779/10779), done.
Switched to branch 'develop'

有时候它不会(在接下来的命令行中,同一个存储库上下文):
$ git checkout master
Switched to branch 'master'

这并不是因为分支相等,因为在下一个命令上切换会显示以下反馈:

$ git checkout develop
Checking out files: 47% (5067/10779), done.
Switched to branch 'develop'

这也发生在小仓库中。我有一个只有13个文件的仓库,当我在一个分支中添加一个文件并使用checkout来切换时,我没有得到任何反馈。这是某种“需要一段时间,开始显示反馈”的计时器吗?
我搜索了(Google,Stackoverflow),但没有找到具体的答案。我确实找到了一些补丁文档,显示checkout添加了一个--verbose标志,强制始终发生反馈,但我找不到为什么没有那个补丁时有时会出现反馈的解释。同样的注释指出,只有在isatty()返回true时才会发生反馈,但这与此处无关,因为所有上述命令都是在同一个bash窗口中输入的,该窗口可能是isatty。
我正在使用git 版本1.8.1.msysgit.1(从git-scm.com下载为1.8.1.3),据我所知,它没有--verbose补丁。

我之前在使用git时也注意到了同样的问题。我认为这是因为打印输出“检查文件”的过程并不总是被调用,出于某些原因(例如,git注意到没有差异)。这只是一个建议。 - Mark Tielemans
2个回答

5

现在,此结帐输出将更符合Git 2.7(2015年11月/12月)的一致性。

请参见提交记录870ebdb(2015年11月1日),由Edmundo Carmona Antoranz (eantoranz)完成。
(由Junio C Hamano -- gitster --提交记录6a38bd6中合并)

git checkout”未遵循通常的“--[no-]progress”约定,只实现了本质上是“--no-progress”的“--quiet”。
扩展该命令以支持通常的“--[no-]progress”。

git checkout文档现在显示:

--[no-]progress::

默认情况下,如果连接到终端,则进度状态会通过标准错误流报告,除非指定了--quiet
使用此标志即使未连接到终端也可以启用进度报告,而且与--quiet无关。 checkout: 添加--progress选项
在正常情况下,就像其他git命令一样,如果连接到终端,git checkout将向stderr写入进度信息。
此选项即使不使用终端也可以强制启用进度
此外,如果使用--no-progress选项,可以跳过进度。

2

在正常情况下,如果操作运行时间超过1秒,则会在检查输出时看到结果。


如果您没有提供 --progress/--no-progress 选项(或 --quiet),并且您不是从终端运行git,则进度输出将被跳过。 - eftshift0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接