2010-11-19 135 views
21

我一般喜歡在git中使用尋呼機,但對於git stash,尋呼機讓我很煩惱。當撥打git stash list時,我不希望在尋呼機中顯示三行輸出 - 這迫使我按q只是在輸入以下命令時使輸出再次不可用:git stash pop命令。在git中關閉尋呼機的尋呼機只有

一個解決方案是使用

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 

這只是沒有任何效果。我錯過了什麼?我怎樣才能實現git stash不使用尋呼機?

+0

你有任何其他尋呼機相關的配置?藏匿處不會爲我使用尋呼機。 – Cascabel 2010-11-19 14:46:33

+0

Strike that:list子命令確實分頁,並忽略配置。 – Cascabel 2010-11-19 14:58:21

+1

請參閱下面的答案:'git config --global pager.stash false'不工作是git 1.7.7.3及更高版本中修復的錯誤。 – cbowns 2012-02-03 01:30:12

回答

9

它看起來像藏匿處,任何其他非內建命令(寫成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,這樣它會生成一個子shell和重新調用飯桶。

另一個臨時修復,因爲它是一個shell腳本,將直接編輯0​​。只需要找到list_stash函數,並將--no-pager選項添加到git log的調用中,或者覆蓋整個腳本,在頂部設置。

+0

感謝您提供的信息,並將其列入git郵件列表(我也在那裏閱讀您郵件的答案)。關於別名:我也嘗試了一個不同於'藏'的名字,但效果是一樣的。奇怪的是,我沒有收到錯誤信息(版本1.7.2.3),所以我覺得這個名字不是原因。我現在只需要修改腳本。 – 2010-11-19 17:05:41

+1

@Sven:你實際上是否有不止一個屏幕的價值列表?或者,您的傳呼機在少於一個輸出屏幕後不會退出? – Cascabel 2010-11-19 17:19:56

+0

@Sven:我不確定你爲什麼沒有得到那個錯誤。該檢查很久以前就已添加(v1.5.3)。儘管如此,子shell別名('!...')也應該可以正常工作,並避免編輯git本身。 – Cascabel 2010-11-19 17:34:12

23

從1.7.7.3開始,git config --global pager.stash false完成了此操作。

7

另外,您可以配置less退出,如果有輸出小於一個屏幕的價值:

export LESS='-F' 

或者冗長:

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

如果在您的git的輸出有顏色,你」我可能也想通過-r標誌:

export LESS='-F -r' 
+0

這個解決方案已經隱藏在Jefromi的回答(以某種方式)的評論中。儘管如此,自己的答案還是很好的。 – 2012-03-26 11:25:47

+3

這裏不起作用(xterm在pts上),因爲'less'退出之後,沒有任何顯示不足,它重繪了以前的提示。但它在tty1上的術語「linux」上起作用。 – lolesque 2012-04-18 15:46:40

+0

是的,在某些系統/終端輸出消失,因爲它全部進入「備用屏幕」,並立即切換回:-(增加'--no-init'可能有幫助 – 2017-11-13 11:37:17

0
stll = "!git --no-pager stash list" 

是你的朋友。