2017-05-08 94 views
1

我不知道如何更好地說這個。使git日誌產生命令輸出'inline'

當我運行任何git log命令時,它在它自己的'窗口'中產生一個輸出。我需要點擊q來回到提示,然後所有的日誌顯示都消失了。

有沒有什麼辦法可以產生'inline'日誌輸出,所以日誌輸出顯示後會出現提示?

+1

你需要按q鍵,因爲輸出使用尋呼機。如果你不需要它,你可以在git和它的子命令之間添加'--no-pager'。例如'git --no-pager log'。 – ElpieKay

+1

還(假設* nix中),如果你想'git的log'簡單地打印到'默認stdout',可以設置'core.pager'配置變量使用'cat'(而不是'less',這按默認值使用)。 IE瀏覽器。在全局gitconfig中設置配置變量,運行'git config --global core.pager cat'。 – Alderath

+1

另外,如果該尋呼機'less',你可以設置LESS環境變量設置爲包含'-FX'('--quit - 如果一屏--no-init')選項。第一個選項可以讓你免受短輸出的'q'鍵(比如'git log -1'),第二個選項會在'less'退出後在標準輸出中使其「粘住」(這可能意味着通過顯示「一致」)。 – eush77

回答

3

原因的git log輸出不留在終端歷史後git退出是該尋呼機程序git用來顯示其輸出發射escape sequences切換到備用顯示緩衝器以保持主緩衝器完好。這通常是一個有用的功能。

一些尋呼機允許禁用此緩衝器切換。例如,如果該尋呼機less(默認一個在類Unix系統),你可以設置LESS環境變量在你的shell配置文件:

export LESS="--no-init" 

這將打開-X, --no-init選項默認情況下,(然後可以通過命令行上的-+X開關關閉)。其效果是git log的輸出將被寫入主緩衝區,並因此停留在終端歷史記錄中。

如果尋呼機支持緩衝器切換,但沒有辦法關閉它,那麼唯一的解決方案就是不要使用這樣的尋呼機來輸出git log

切換尋呼機到別的東西:

$ git config --global core.pager less 

或禁用分頁爲git log

$ git config --global pager.log false 

甚至完全 - 每隔git命令:

$ git config --global core.pager cat 

當我 運行任何git log命令,它會在其自己的「窗口」中生成輸出。我需要打q回來提示

至於你的問題的一部分,我會說,你實際上並不希望輸出git log兆在終端瀉每你運行的時間是git log。功能尋呼機爲您提供的功能通常非常有用:滾動,搜索,跳轉,更改文件,運行命令等。

你可能想要的是繞過尋呼機的短輸出。 git不提供此功能,但有些傳呼機可以。例如,如果你使用less,你可以在你的shell配置添加-F, --quit-if-one-screen選項LESS環境變量:

export LESS="--no-init --quit-if-one-screen" 

這將使less自動退出,如果整個輸出可以在一個屏幕上顯示。