【问题标题】:How to display output of `git branch` on-screen in same CLI terminal? [duplicate]如何在同一 CLI 终端中在屏幕上显示“git branch”的输出? [复制]
【发布时间】:2019-06-17 07:07:21
【问题描述】:

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

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

$ 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 的工作方式。最近发生了一些变化,这让我发疯了!有什么办法可以恢复旧的行为?

【问题讨论】:

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

标签: git shell command-line-interface


【解决方案1】:

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

大多数终端仿真器都提供了备用屏幕的概念。打开编辑器会切换到这个备用屏幕;此屏幕中显示的文本保留在此屏幕中,并且在此屏幕中。退出编辑器切换回主屏幕,备用屏幕文本消失,这样您就回到了命令行会话,而编辑器的显示不会使事情变得混乱。如果这是您想要的,那很好,并且在使用编辑器时有些有意义。

不幸的是,这里的实现是为使用光标寻址模式的一切进行这种切换,而less 使用光标寻址模式。所以这意味着通过less 的管道输出切换到备用屏幕。

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

-X 或 --no-init
禁用发送 termcap 初始化和取消初始化 字符串到终端。这有时是可取的,如果 去初始化字符串做了一些不必要的事情,比如 清除屏幕。

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

一些用户(包括我自己)真的非常非常讨厌这种交替屏幕切换,并希望我们的 editor 输出保留在屏幕上。在这里,一个更强大的技巧是完全禁用备用屏幕。然而,这更难。参见,例如How can you turn off alternate screen in OSX's Terminal.app? 有些人真的非常喜欢这种行为并希望在它关闭时将其打开:参见,例如,screen: how to turn on alternate screen?(其中有更多关于如何关闭它的链接)。

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-11-15
  • 2013-01-31
  • 2019-02-10
  • 1970-01-01
  • 2014-01-04
  • 2018-08-28
  • 2011-09-27
  • 1970-01-01
相关资源
最近更新 更多