Den*_*sen 305 git terminal zsh git-branch oh-my-zsh
当我使用git branch
命令列出所有分支时,我看到输出git branch | less
.
该命令git branch
应该显示分支列表,就像ls
文件一样.
这是我得到的输出:
我如何获得默认行为git branch
?导致分页输出的原因是什么?
我正在使用ZSH oh_my_zsh
(在那里没有Git),我.gitconfig
看起来像这样:
[user]
email = myemail@mail.com
name = Dennis Haegler
[push]
default = simple
[merge]
tool = vimdiff
[core]
editor = nvim
excludesfile = /Users/dennish/.gitignore_global
[color]
ui = true
[alias]
br = branch
ci = commit -v
cam = commit -am
co = checkout
df = diff
st = status
sa = stash
mt = mergetool
cp = cherry-pick
pl = pull --rebase
[difftool "sourcetree"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh
\"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true
Run Code Online (Sandbox Code Playgroud)
小智 549
如上所述,这是Git 2.16中引入的默认行为更改.
您可以git branch
使用pager.branch
配置设置默认关闭分页输出:
git config --global pager.branch false
Run Code Online (Sandbox Code Playgroud)
Yon*_* Wu 37
接受的答案似乎是错误的。有两个问题:
git branch
始终不使用寻呼机,这在有大量输出时是不需要的。真正的原因是 bash 和 zsh 对 LESS 有不同的默认定义:bash 什么都不定义,而 zsh 将其定义为-R
. 当我unset LESS
在 zsh 中执行时,一切都恢复正常....
该-R
行为可能仍然是需要的。在这种情况下,您可以将以下指令添加到您的 .zshrc 以保持一切正常:
export LESS=-FRX
Run Code Online (Sandbox Code Playgroud)
-F
'如果整个文件可以显示在第一个屏幕上,则导致 less 自动退出'。但是,-X
需要同时指定,否则当输出少于一屏时将不显示任何输出。
Mat*_*Moy 36
正如其他答案所指出的那样,less
对于大多数命令,git默认将自身管道化为寻呼机(默认情况下).
但重要的一点是,当未设置LESS环境变量时,Git将其设置为FRX,结果是用户可见行为与命令输出短时未使用寻呼机的行为相同(即如果你只有几个分支).见人少:
-F或--quit-if-one-screen
如果整个文件可以显示在第一个屏幕上,则会自动退出.-R或--RAW-CONTROL-CHARS
[...] ANSI"颜色"转义序列以"原始"形式输出.-X或--no-init
禁止将termcap初始化和取消初始化字符串发送到终端.如果取消初始化字符串不需要某些操作,例如清除屏幕,则有时需要这样做.
如果你得到你描述的行为,你很可能已经$LESS
设置了其他东西,并且取消它会解决问题,同时保持"寻呼机"行为以获得长输出.或者,您可以通过将此行为unset LESS
添加到$LESS
文件中来激活保持原样的行为:
[core]
pager = less -FRX
Run Code Online (Sandbox Code Playgroud)
如果你真的不喜欢寻呼机,你可以在全局或基于每个命令的基础上停用它(参见其他答案).
Mar*_*ger 25
不要争论语义,但你得到的行为是默认的.这就是为什么当你不要求不同的东西时你得到它.默认情况下,branch
(和许多其他git命令)在向终端发送输出时使用寻呼机.
您可以使用该--no-pager
选项覆盖此默认值
git --no-pager branch
Run Code Online (Sandbox Code Playgroud)
或者,如果将输出重定向到文件,git应检测到它没有写入终端,因此不应使用寻呼机.(另一方面,这表明脚本用例,在这种情况下,您应该考虑使用git for-each-ref
优先级的管道命令git branch
.)
ion*_*u77 17
Git的行为也让我越来越烦。less
例如,当我只想列出标签时,我就获得了标签列表。
人们可以通过更改默认也控制此行为的Git PAGER来cat
代替less
。我宁愿在iTerm中滚动而不是在编辑器中滚动。我喜欢在需要时使用编辑器。
所以:
git config --global core.pager cat
Run Code Online (Sandbox Code Playgroud)
对于那些想要更新其~/.gitconfig
解决方案的人,它看起来像这样:
[pager]
branch = false
Run Code Online (Sandbox Code Playgroud)
Git分支命令的行为类似于“少”
因为默认情况下,Git在分页器中打开输出(至少在Ubuntu中)。该接受的答案将完全取代寻呼机,这你可能不喜欢,如果你的输出是很长。
我建议将寻呼机替换为less
,这样它不会“滚动”输出小于终端高度的输出。
git config --global --replace-all core.pager "less -F -X"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23134 次 |
最近记录: |