【问题标题】:gitk display only specified branchesgitk 只显示指定的分支
【发布时间】:2014-07-22 11:26:11
【问题描述】:

我想使用 gitk 比较 2 个分支,而没有其他分支历史的混乱。
我可以通过 gui 实现这一点:视图 > 新视图 > 分支和标签:v0.8.x v0.9.x
我尝试了以下方法,但它仍然显示所有分支:gitk --branches v0.8.x v0.9.x
正确的语法是什么?

【问题讨论】:

    标签: git gitk


    【解决方案1】:

    我无法使--branches[=<pattern>] 参数起作用(对于任何shell glob,尤其是对于多个glob)。幸运的是,您可以使用一大堆 unix 管道来完成同样的工作。

    git branch -r | egrep "origin/(testing|prod|dev)" | xargs | tr '\n' ' ' | xargs -I {} bash -c 'gitk {}'
    

    细分:

    • git branch -r -- 显示所有远程分支

    • egrep "origin/(testing|prod|dev)" -- 过滤以testing*prod*dev* 开头的那些。

    • 第一个xargs——修剪的简单方法

    • tr '\n' ' ' -- 将所有结果合并到一个空格分隔的行中

    • xargs -I {} bash -c 'gitk {}' -- 将该行通过管道传输到 gitk

    【讨论】:

    • 这比公认的答案好!当您需要 --branches=bugfix/* 以外的东西时,gitk --branches=... 存在太多可用性问题。
    【解决方案2】:

    gitk v0.8.x v0.9.x 为我做这件事。

    但是,仔细查看显示的分支,我发现实际上没有显示给定的分支。此外,还显示了两个分支历史中所有指向一次提交的分支。

    因此,该命令显示所有指定的分支,包括那些是指定分支的直接祖先的分支。


    编辑:

    如果您想查看所有名为fix/* 的分支,将使用--branches= 开关:

    gitk --branches=fix/*
    

    会显示与给定 shell glob 匹配的所有分支。

    另请参阅gitk 的文档以获得更深入的解释。

    【讨论】:

    • 啊,这是您想要的结果,谢谢。你知道 --branches 选项的用途吗?
    • 遗憾的是,我发现这个答案毫无用处。它只是行不通。我不知道分支名称中的那些斜线是什么。我只有分支“master”(--branches 选项提供什么,gitk 都会说“没有选择提交”。我应该使用的确切咒语是什么?
    • @SzczepanHołyszewski 你只有masterfeature,使用--all 显示所有分支
    • 嗯,我在句子中放错了“just”。它应该在“我想要”部分,而不是“我有”部分。不,我不“只是”拥有这两个分支。我还有其他几个,但我“只是”想在 gitk 中“只”看到这两个。
    • @SzczepanHołyszewski 文档说limit refs to ones matching given shell glob。因此,如果您可以使用 glob 模式表示要显示的两个分支,则可以将其用作 --branches 的参数。如果不是,则不是。如果它们不能使用 glob 模式表达,请坚持 OP 描述的内容:View > New view > Branches & tags: master feature
    猜你喜欢
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多