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

标签 git shell command-line-interface

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





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/

相关文章:

javascript - 如何从 Heroku 应用程序中提取更新的文件?

git - 使用现有分支,但从当前分支复制最新的到它

regex - 匹配包版本字符串在/bin/sh

windows - Heroku CLI 在 babun 中失败

java - 使用 Runtime.exec() 运行 perl 脚本时 BufferedReader.read() 挂起

c - 管理 C 中的代码变体 : changing variable that repeats all over the code

teamcity 中的 Git 短分支名称

linux - 作为守护进程的 Php 脚本

shell - 带有正斜杠的 Sed 模式

javascript - 如何在 Ngoninit() 中使用增量运算符?