首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使git-log向上滚动而不是向下滚动

如何使git-log向上滚动而不是向下滚动
EN

Stack Overflow用户
提问于 2016-03-02 09:36:42
回答 3查看 3.3K关注 0票数 7

每当我在终端模拟器中看到一个git log --all --graph --oneline --decorate输出时,第一个提交就会在终端屏幕的顶部查看。当我退出使用git logq输出视图时,下一个命令在屏幕底部添加了一些新的行,因此不再可以看到其中的几行。

通常,这些最有趣的行是最有趣的,因为它们类似于最近的git历史,所以当我键入下一个git命令时,它们仍然是可见的。

如何使git log输出从屏幕底部开始显示,即在底部查看第一次提交?您必须向上滚动才能查看旧的提交。

注意:--reverse标志不是一个选项,原因有两个。

  1. 每次你必须一直滚动到底部才能看到第一次提交。这不应该是必要的。我想从最底层开始。
  2. 它不与--graph标志:fatal: cannot combine --reverse with --graph组合。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-03 14:21:33

这是一个似乎抓住大多数边缘情况的答案。没有经过彻底的测试。

代码语言:javascript
复制
[alias]
    rlog = !"git --no-pager log --all --graph --decorate --oneline --color=always | tac | awk -f ~/switchslashes.awk | less -X +G -r"

文件~/switchslashes.awk包含的

代码语言:javascript
复制
{
    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
}

这是这个剧本的一个修改版本。它用反斜杠代替下划线,用反斜杠代替掉期斜杠,反之亦然。这修复了文本被tac反转后的图形。

免责声明

我从未开始使用这个,因为它对于更大的存储库来说很慢。它需要加载所有的东西,然后应用替换,这需要太多的时间来满足我的口味。

票数 2
EN

Stack Overflow用户

发布于 2016-03-02 09:42:28

首先,您可以始终将-n传递到日志,以打印出您感兴趣的任意数量的提交。

如何使git日志输出看起来相反?

使用--reverse标志:

--reverse 以反向顺序输出提交。

代码语言:javascript
复制
git log --reverse

有关git日志的更多提示和标志,您可以在这里阅读:

http://www.alexkras.com/19-git-tips-for-everyday-use/

票数 1
EN

Stack Overflow用户

发布于 2016-03-02 10:59:20

接近预期结果的命令是

代码语言:javascript
复制
git --no-pager log --all --graph --decorate --oneline --color=always | tac | less -r +G -X

然而,这仍然会使图形有点混乱,因为斜杠没有被正确地反转。

更新

此命令还负责用反斜杠交换斜杠,反之亦然。

代码语言:javascript
复制
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

相应的git别名是

代码语言:javascript
复制
[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"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35743332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档