【问题标题】:git log show everything _except_ tagsgit log 显示所有_except_标签
【发布时间】:2020-06-01 16:27:21
【问题描述】:

情况: 我在 git 中使用标签来标记版本发布。我还有一个快速命令,可以在 git 中显示一个简单的图表,其中包含我所有活动的开发分支:

git log --oneline --graph --simplify-by-decoration --all

问题在于,这会显示所有标签,占用屏幕上的大量空间。有没有办法过滤掉标签?我仍然想要所有其他信息(即只是活跃的开发分支)。

我尝试使用 --exclude="refs/tags/* 无济于事 - 还有其他建议吗?

我添加了一个image of what my git log looks like with all the tags cluttering it

【问题讨论】:

  • 您的意思是git log ... 而不是git --log
  • 是的,我很抱歉,这是一个漫长的早晨 - 将解决问题

标签: git tags


【解决方案1】:

你可以轻松接近:

git log --graph --decorate --oneline \
        --simplify-by-decoration --branches --decorate-refs=refs/heads

添加--decorate-refs=refs/remotes 将远程分支包含在装饰中,添加--remotes 将它们包含在入门提示中。

【讨论】:

  • 这仍然显示所有标签 - 就我而言,我没有看到这与我之前使用的标签之间的区别。
  • 我在 git 2.25 上,它可以工作,!here's what my Git repo log looks like with the stock 2.25.0
  • 我刚刚更新到 2.25(不确定我之前使用的是什么,我想我是去年八月更新的)。我现在正在获取我的本地存储库(没有标签)。所以我们部分在那里(谢谢!)。虽然这已经比我之前处理的混乱更干净了,但你知道我将如何处理包括远程分支吗?
  • 当然:添加--decorate-refs=refs/remotes
  • 经过进一步调查,添加“--decorate-refs=refs/remotes”似乎只是添加了我已经签出本地分支的远程分支。如果远程分支从我自己的本地对应分支移动了一次提交,则远程不会显示。
【解决方案2】:

我正在寻找的命令是:

    git log --oneline --graph --decorate --simplify-by-decoration --branches --remotes --decorate-refs=refs/heads --decorate-refs=refs/remotes

感谢 @jthill 和 @torek 帮助解决此问题。

编辑:

经过进一步实验,发现如下命令:

log --oneline --graph --decorate --simplify-by-decoration --all --decorate-refs-exclude=refs/tags

上述命令将包括所有本地和远程分支,包括 HEAD 指示器,并将排除标记​​em>

【讨论】:

    【解决方案3】:

    在您的第一个命令中:

    git log --oneline --graph    --decorate --simplify-by-decoration \
            --branches --remotes --decorate-refs=refs/heads --decorate-refs=refs/remotes
    

    如果您使用的是 Git 2.35(2022 年第一季度),则可以删除 --decorate

    当“git log(man) 隐式启用装饰处理而没有使用--decorate 选项明确询问时,它无法读取和遵守“@987654336”给出的设置@" 选项。

    参见Jeff King (peff)commit be73860commit 14b9c2b(2021 年 12 月 2 日)。
    (由 Junio C Hamano -- gitster -- 合并于 commit 00cbaf9,2021 年 12 月 21 日)

    log: 使用 --simplify-by-decoration 加载装饰

    签字人:杰夫·金

    可以指定--simplify-by-decoration,但不能指定--decorate。
    在这种情况下,我们确实尊重简化,但实际上并没有显示任何装饰。
    但是,它通过在需要时延迟加载装饰来工作;这在0cc7380 中有更详细的讨论(“log-tree:在get_name_decoration() 中调用load_ref_decorations()”,2019-09-08,Git v2.24.0-rc0 -- mergebatch #6 中列出)。

    这适用于基本情况,但不会尊重任何--decorate-refs 选项(或其变体)。
    仅当 cmd_log_init() 预先加载 ref 装饰时才会处理这些问题,即仅当显式指定 --decorate 时(或在上一次提交时,当用户格式要求 %d 或类似时)。

    如果我们要简化使用装饰,我们可以通过确保加载装饰来解决这个问题,但否则它们不会被显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-29
      • 2013-02-05
      • 1970-01-01
      • 2022-11-10
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      相关资源
      最近更新 更多