gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:49:41 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com