chr*_*kar 9 git shell command-line-interface
抱歉,我无法表达我的问题。我在 CLI 上运行(zsh如果重要的话),使用 git 版本2.20.0并在 macOS 上运行(我想我在家里的 Ubuntu 系统上也遇到过它)。
git branch问题:如何在同一 CLI 屏幕上显示输出?也就是说,如果我跑步,
$ git branch
$
Run Code Online (Sandbox Code Playgroud)
它会弹出一个新屏幕/窗口(在我的 CLI 内),向我显示我的所有分支。按q关闭屏幕并返回 shell。问题是我不记得我拥有的分支机构的名称!我希望它们打印在屏幕上!
理想输出,
$ git branch
* master
branch_01
branch_02
temp_branch
experiment_2_delete
$
Run Code Online (Sandbox Code Playgroud)
一个可疑的解决方法是执行以下操作,
$ git branch > stuff.txt
$ cat stuff.txt
* master
branch_01
branch_02
...
$
Run Code Online (Sandbox Code Playgroud)
但它会在当前目录中创建一个新的文本文件,这会变得混乱。记忆告诉我,这曾经是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,编辑替代屏幕转义序列,然后编译我自己的 terminfo”方法。)