这个问题在这里已经有了答案:
Git branch command behaves like 'less'
(9 个回答)
2年前关闭。
我很抱歉,但我无法表达我的问题。我在 CLI 上运行( zsh
如果重要的话),使用 git 版本 2.20.0
以及在 macOS 上(我想我也在家里的 Ubuntu 系统上遇到过它)。
问题:如何显示git branch
的输出在同一个 CLI 屏幕上?即如果我跑,
$ git branch
$
它会 pop 一个新屏幕/窗口(在我的 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
)。
大多数终端仿真器提供备用屏幕的概念。打开你的编辑器会切换到这个备用屏幕;此屏幕中显示的文本保留在此屏幕中,并且仅在此屏幕中。退出编辑器会切换回主屏幕,并且备用屏幕文本消失,因此您将返回到命令行 session ,而编辑器的显示不会使事情变得困惑。如果这是您想要的,那很好,并且在使用编辑器时也很有意义。
不幸的是,这里的实现是对使用游标寻址模式的所有内容进行这种切换,以及 less
使用游标寻址模式。所以这意味着管道输出通过 less
也切换到备用屏幕。
有许多变通方法和修复。最简单的less
本身就是用的-X
选项,如 this bug report 中所述和 less
文档:
-X or --no-init
Disables sending the termcap initialization and deinitialization strings to the terminal. This is sometimes desirable if the deinitialization string does something unnecessary, like clearing the screen.
请注意,Git 默认运行
less -FRX
, 所以如果你 (a) 正在使用 less
和 (b) 没有得到 -FRX
,通过 core.pager
检查您是否覆盖了默认值(或 $GIT_PAGER
)和/或通过环境变量 LESS
.一些用户(包括我自己)真的非常讨厌这种交替屏幕切换,并希望我们的编辑器输出保留在屏幕上。在这里,一个更强大的技巧是完全禁用备用屏幕。然而,这更难。参见,例如,How can you turn off alternate screen in OSX's Terminal.app?有些人真的,真的很喜欢这种行为,并希望在它关闭时打开它:参见,例如,screen: how to turn on alternate screen? (其中有更多关于如何关闭它的链接)。
(我使用“反编译 terminfo,编辑出 alt 屏幕转义序列,并自己编译我自己的 terminfo”方法。)
关于git - 如何在同一个 CLI 终端的屏幕上显示 `git branch` 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54331536/