代码之家  ›  专栏  ›  技术社区  ›  Sven Marnach

仅为stash命令关闭git中的寻呼机

  •  25
  • Sven Marnach  · 技术社区  · 14 年前

    我通常喜欢在Git中使用寻呼机,但是 git stash 传呼机使我恼火。打电话时 git stash list ,我不想在寻呼机中显示三行输出--它强制我按 q 只是在输入以下内容时使输出再次不可用 git stash pop 命令。

    一种解决方案是

    git --no-pager stash list
    

    但这对很多打字来说(我很懒)。跟随 man page of git config ,我试过了

    git config --global pager.stash false
    

    但这似乎并没有像文档所说的那样(实际上,我没有注意到任何影响)。然后我试着

    git config --global alias.stash "--no-pager stash"
    

    同样没有任何明显的效果。

    例如,配置得到了正确的更新

    git config pager.stash
    false
    

    只是没有任何效果。我错过了什么?我怎样才能做到 暂存 不使用寻呼机吗?

    4 回复  |  直到 10 年前
        1
  •  10
  •   Cascabel    14 年前

    它看起来像stash,任何其他非内置命令(写为shell脚本,而不是用C编写)都会在寻呼机配置步骤中遗漏。我给Git邮件列表发了一封信,询问了这个问题;看起来这是一个已知的问题,但解决起来并不容易。

    您看到别名没有任何效果的主要原因是Git会静默地忽略内置命令的别名;其思想是您永远不希望实际地使命令不可访问。要使别名有机会运行,您需要将其命名为 stash .

    但是,我认为简单别名不允许影响运行git命令的环境,它通常包括传递给 git 本身。如果我使用像你这样的别名:

    git config alias.foo --no-pager stash
    git foo
    fatal: alias 'foo' changes environment variables
    

    如果你想做得好,你就得用 !git --no-pager stash 这样它就会产生一个子壳,然后重新投票给Git。

    另一个临时的解决方案是,因为它是一个shell脚本,所以要进行编辑 libexec/git-core/git-stash 直接。去找找 list_stash 函数,并添加 --no-pager 选择其呼叫 git log 或覆盖整个脚本,设置 GIT_PAGER=cat 在顶部。

        2
  •  30
  •   cbowns    13 年前

    从1.7.7.3开始, git config --global pager.stash false 实现这一点。

        3
  •  7
  •   Andy Stewart    13 年前

    或者,您可以配置 less 如果输出值小于一个屏幕,则退出:

    export LESS='-F'
    

    或者,口头上:

    export LESS='--quit-if-one-screen'
    

    如果您的Git输出中有颜色,您可能还希望通过 -r 旗帜:

    export LESS='-F -r'
    
        4
  •  0
  •   DrStrangepork    10 年前
    stll = "!git --no-pager stash list"
    

    是你的朋友。