2016-03-02 123 views
1

每當我在終端仿真器中查看git log --all --graph --oneline --decorate輸出時,都會在終端屏幕的頂部查看第一個提交。當我用q退出git log輸出視圖時,幾行內容不再可見,因爲在屏幕底部附加了一些新行,用於執行下一個命令。如何使git-log向上而不是向下滾動

通常情況下,這些頂部線條是最有趣的,因爲它們類似於最近的git歷史記錄,所以我希望它們在我鍵入下一個git命令時仍然可見。

我怎樣才能使git log輸出顯示在屏幕的底部,即第一次提交是在底部查看?您將不得不向上滾動以查看較早的提交。

注意:由於兩個原因,--reverse標誌不是選項。

  1. 每次必須滾動到底部才能查看第一個提交的 提交。這不應該是必要的。我想從底部開始。
  2. 它不與--graph標誌結合:fatal: cannot combine --reverse with --graph
+0

你有沒有試過'git log --reverse'? – Jubobs

+2

[我可以得到git log以相反順序打印歷史嗎?](http://stackoverflow.com/questions/2798822/can-i-get-git-log-to-print-the-history-倒序) – Jubobs

+0

@Jubobs沒有重複。 Git log --reverse將從最後一次提交開始,這不是我想要的。另外,它不能和--graph結合使用。將更新的問題,包括作爲一個要求 –

回答

1

這是一個似乎趕上最邊緣的情況下的答案。未經徹底測試。

[alias] 
    rlog = !"git --no-pager log --all --graph --decorate --oneline --color=always | tac | awk -f ~/switchslashes.awk | less -X +G -r" 

其中文件~/switchslashes.awk包含

{ 
    match($0,/([[:space:][:cntrl:]|*\/\\]+)(.*)/,a) # find the segment of the graph 
    tgt = substr($0,RSTART,RLENGTH)  # save that segment in a variable tgt 
    gsub(/\//,RS,tgt)     # change all /s to newlines in tgt 
    gsub(/\\/,"/",tgt)     # change all \s to /s in tgt 
    gsub(RS,"\\",tgt)     # change all newlines to \s in tgt 
    gsub(/_/,"¯",tgt)     # change all _ to ¯ in tgt 
    print tgt substr($0,RSTART+RLENGTH) # print tgt plus rest of the line 
} 

其爲this script的修改版本。它用上劃線替換下劃線,並用反斜槓替換斜線,反之亦然。這樣在文本被tac逆轉之後修復了圖表。

免責聲明

用這個,因爲它是與大庫慢我從來沒有開始。它需要加載所有內容,然後應用替換,這會花費太多時間來滿足我的口味。

+0

在OS X上,tac不可用。你可以安裝GNU coreutils並使用gtac代替。 –

+0

用免責聲明修改了答案。 –

1

首先,你可以送花兒給人傳遞-n到日誌打印出你感興趣的任何數量的提交。


我怎樣才能讓git的日誌輸出顯示反轉

使用--reverse標誌:

--reverse

輸出以相反的順序的提交。

git log --reverse 

你可以在這裏閱讀了解有關git的日誌更多的技巧和標誌:
http://www.alexkras.com/19-git-tips-for-everyday-use/

+0

我不知道前面哪條線我感興趣,所以我不能舔'-n'。另外,我已經更新了OP關於需要使用--graph參數的問題,這不符合 - 反向。 –

0

來接近預期的結果的命令是

git --no-pager log --all --graph --decorate --oneline --color=always | tac | less -r +G -X 

然而,這仍然因爲斜線沒有正確反轉,所以會稍微混淆圖表。

更新

這個命令,也不在乎換用反斜槓,反之亦然斜線。

git --no-pager log --all --graph --decorate --oneline --color=always | tac | sed -e 's/[\]/aaaaaaaaaa/g' -e 's/[/]/\\/g' -e 's/aaaaaaaaaa/\//g' | less -r +G -X 

相應的混帳別名是

[alias] 
    rlog = !"git --no-pager log --all --graph --decorate --oneline --color=always | tac | sed -e 's/[\\]/aaaaaaaaaa/g' -e 's/[/]/\\\\\\\\/g' -e 's/aaaaaaaaaa/\\\\//g' | less -r +G -X" 
+0

使用http://stackoverflow.com/a/35754356/1546844中的awk替換腳本,可以改進斜線切換以僅應用於圖形部分 –

相關問題