如何让git log不提示继续?

sti*_*ijn 75 git

我有几个属于一起的git存储库,以及简单的批处理/ bash文件来循环它们.我经常使用log命令循环它们以快速查看它们处于什么状态.这很好用,除了一件事:如果提交消息长于我的控制台宽(或有多行)的字符数,git显示该行,然后是一个换行符(END),我必须按q继续(我猜它通过更多或类似的东西管道输出).例:

> gitloop . "git log --decorate=short --pretty=oneline -n1"
18629ae238e9d5832cb3535ec88274173337a501 (HEAD, origin/master, master) short log

625fb891b9b0b8648459b07ace662ae3b7773c7f (HEAD, origin/master, origin/HEAD, master) short log

dc0838118266ba8570ea338c1faddfe8af0387bb (HEAD, origin/work, origin/master, work, master) oops loooooooooooooong log
-(END)
Run Code Online (Sandbox Code Playgroud)

这是相当不方便的,因为我必须按q几次,而我只想一次看到所有这些oneliner.

如何禁用此行为(最好还是保留此日志格式)?

toa*_*abi 112

Git有一个禁用寻呼机的选项:

git --no-pager log --decorate=short --pretty=oneline -n1
Run Code Online (Sandbox Code Playgroud)

如果你的寻呼机切断线并且你想保留这种行为,要么管道到cut......

git --no-pager log --decorate=short --pretty=oneline -n1 | cut -c 1-$COLUMNS
Run Code Online (Sandbox Code Playgroud)

...或者GIT_PAGER在调用之前设置环境变量:

GIT_PAGER="cut -c 1-${COLUMNS-80}" git --no-pager log --decorate=short --pretty=oneline -n1
Run Code Online (Sandbox Code Playgroud)

  • @WarrenP `git` 没有内置寻呼机。相反,它遵循 Unix 哲学并使用“$PAGER”中的任何内容。`git` 总是使用 `$PAGER`,而不是像许多其他写得不好的工具那样随机使用。`git` 唯一的魔力是,如果 `$LESS` 没有定义*,它会定义 `$LESS` 来值 `FRX`。有关更多详细信息,请参阅 https://github.com/git/git/blob/master/Documentation/config.txt#L766。 (3认同)
  • 修复 git 行为的最简单情况:export GIT_PAGER=cat (2认同)

vla*_*koi 6

专门用于在使用子命令时永久禁用寻呼机的另一种解决方案log

  • 仅适用于当前回购:
    git config pager.log false

  • 用于git安装(即计算机上的所有存储库):
    git config --global pager.log false

您可能会猜到,如果需要选择性地打开关闭某些其他子命令的传呼机,则可以达到相同的效果。 例如 对于(打印分支)子命令,它将是
branch

git config pager.branch false


提出的解决方案可以说比起

  • 使用git --no-pager每次运行某些命令的时间。
    因为很可能您不想每次都键入它。

  • 指定git --no-pager为的别名,git
    因为很可能要避免隐式全局配置,或者在某些情况下希望启用寻呼机

  • 依赖一些环境变量,如PAGERGIT_PAGER
    因为这样做,您需要确保在当前的终端会话中设置了它们。并且,如果希望每次创建新终端时将它们自动设置为某些自定义值,则需要更改shell引导文件之一,例如~/.bashrc。这不是大问题。但是这些自举文件也经常被其他应用程序更改,并且包含许多其他内容,而不仅仅是Git使用的文件。因此,从理论上讲,最好使用git相关的设置,git config而不是将其放入例如~/.bashrc


禁用的替代解决方案pager所有的子命令是指定cat为公用事业git会使用分页:

  • git config core.pager cat 要么
  • git config --global core.pager cat

我的回答是以下内容的改写:
“防止git diff使用分页器吗?”
/sf/answers/489036201/

引用它来指出另一个相关的讨论。


小智 5

禁用所有命令的寻呼机:

git config --global core.pager '' 
Run Code Online (Sandbox Code Playgroud)