如何在同一CLI终端的屏幕上显示'git branch'的输出?

如何在同一CLI终端的屏幕上显示'git branch'的输出?,git,shell,command-line-interface,Git,Shell,Command Line Interface,我很抱歉,但我的问题措辞有问题。我在CLI上运行(zsh,如果有必要的话),使用git版本2.20.0和macOS(我想我在家里的Ubuntu系统上也遇到过) 问题:如何在同一CLI屏幕上显示git branch的输出?i、 如果我跑步 $ git branch $ 它会弹出一个新的屏幕/窗口(在我的CLI中),显示我的所有分支。按q关闭屏幕并将我返回shell。问题是我不记得我的分支机构的名称!我想把它们印在屏幕上 理想产量, $ git branch * master branch_01

我很抱歉,但我的问题措辞有问题。我在CLI上运行(
zsh
,如果有必要的话),使用git版本
2.20.0
和macOS(我想我在家里的Ubuntu系统上也遇到过)

问题:如何在同一CLI屏幕上显示git branch的输出?i、 如果我跑步

$ git branch
$
它会弹出一个新的屏幕/窗口(在我的CLI中),显示我的所有分支。按
q
关闭屏幕并将我返回shell。问题是我不记得我的分支机构的名称!我想把它们印在屏幕上

理想产量,

$ git branch
* master
branch_01
branch_02
temp_branch
experiment_2_delete
$
一个可疑的解决方法是执行以下操作:

$ git branch > stuff.txt
$ cat stuff.txt
* master
branch_01
branch_02 
...
$

但它会在当前目录中创建一个新的文本文件,这会变得很混乱。记忆告诉我这曾经是git的工作方式。最近有些事情变了,快把我逼疯了!有没有办法恢复以前的行为?

这实际上是你的寻呼机的问题(现在可能
less

大多数终端模拟器都提供了备用屏幕的概念。打开编辑器切换到此备用屏幕;此屏幕中显示的文本将保留在此屏幕中,并且仅保留在此屏幕中。退出编辑器将切换回主屏幕,备用屏幕文本将消失,这样您就可以返回到命令行会话,而不会使编辑器的显示混乱。如果这是您想要的,这很好,并且在使用编辑器时有一定的意义

不幸的是,这里的实现是对所有使用光标寻址模式的东西进行切换,而
less
使用光标寻址模式。因此,这意味着通过
less
的管道输出也会切换到备用屏幕

有许多变通方法和修复方法。
less
本身最简单的方法是使用
-X
选项,如和
less
文档中所述:

-X或--no init
禁用发送termcap初始化和取消初始化 连接到终端的字符串。如果 去初始化字符串会执行一些不必要的操作,例如 清除屏幕

请注意,Git默认运行
less-FRX
,因此,如果您(a)正在使用
less
,并且(b)没有获得
-FRX
,请通过
core.pager
(或
$Git\u pager
)和/或通过环境变量
less
,检查是否覆盖了默认值

一些用户(包括我自己)真的,真的很讨厌这种交替屏幕切换,希望我们的编辑器输出保持在屏幕上。在这里,一个更强大的技巧是完全禁用备用屏幕。然而,这更难。看,例如,一些人真的,真的很喜欢这种行为,并且想在它关闭时打开它:看,例如,(其中有更多关于如何关闭它的链接)


(我自己使用“反编译terminfo,编辑alt屏幕转义序列,并编译我自己的terminfo”方法。)

基本上,我想问一下如何在CLI上打印git分支,但这并不是真正的问题,人们会感到困惑。花了令人痛苦的30分钟输入这个问题。@phd阅读这个问题和答案-是的,这是重复的
git config--global pager.branch false
正是我所需要的!备案;我确实使用了搜索功能,但找不到该问题。当我创建这个问题时,它也没有作为一个备选问题出现。重复的问题经常出现,特别是当不清楚发生了什么时,这就是为什么重复的问题不坏的原因。我仍然建议确保您的less设置默认使用
-X
(也可以使用
-F
-R
,以使颜色正常工作)。您还可以在~/.gitconfig文件中添加
[core]pager=less-FRX
。这是一篇信息性文章,但更多是我想要的。谢谢@torek。