2016-03-02 51 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替换脚本,可以改进斜线切换以仅应用于图形部分 –

相关问题