git - 如何在同一 CLI 终端中在屏幕上显示“git branch”的输出?
问题描述
我很抱歉,但我无法表达我的问题。我在 CLI 上运行(zsh
如果重要的话),使用 git 版本2.20.0
和 macOS(我想我也在家里的 Ubuntu 系统上遇到过它)。
问题:如何git branch
在同一个 CLI 屏幕上显示输出?即,如果我跑步,
$ 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 默认为 running less -FRX
,因此如果您 (a) 正在使用less
并且 (b) 没有得到-FRX
,请检查您是否通过core.pager
(或$GIT_PAGER
)和/或环境变量覆盖了默认值LESS
。
一些用户(包括我自己)真的非常讨厌这种交替屏幕切换,并希望我们的编辑器输出保留在屏幕上。在这里,一个更强大的技巧是完全禁用备用屏幕。然而,这更难。参见,例如,如何在 OSX 的 Terminal.app 中关闭备用屏幕? 有些人非常非常喜欢这种行为,并希望在它关闭时将其打开:例如,请参阅屏幕:如何打开备用屏幕?(其中有更多关于如何关闭它的链接)。
(我自己使用“反编译 terminfo,编辑掉 alt-screen 转义序列,并自己编译自己的 terminfo”方法。)
推荐阅读
- c++ - 如何将浮点数加上一个小错误?
- reactjs - 如何在 React 中正确使用 useState 钩子和 typescript?
- json - .NET Core 中带有参数的自定义 JsonConverter
- javascript - 序列化表单并使用 ajax 发送时,如何从输入字段中发布多个值?
- php - 尝试使用基于按钮单击的php即时使用jquery附加一个html元素,但没有显示任何内容
- java - 谷歌播放说我正在请求位置许可(我不是)
- javascript - React Hooks - 当我的状态结构是树时,我如何更新状态
- html - 获取错误连接被拒绝:连接鳄梨酱驱动的应用程序
- angular - 来自不同路由的相同组件的Angular Service依赖注入
- c++ - 使用 CRTP 从一组模板类运算符继承