【问题标题】:Get pretty git rev name获得漂亮的 git rev 名称
【发布时间】:2012-04-02 21:39:25
【问题描述】:

所以我知道这个问题被问了很多很多,但我没有找到任何合适的答案。我希望在我的提示中显示当前 git rev 的名称,但是以一种漂亮的方式:如果我在一个分支上,我想要分支的名称;如果它不是一个分支,我想在我的提示中使用相对名称(即master~2)。

起初,我使用的是what you can see here 之类的东西。效果很好:我有分支的名称,或者 rev SHA1 编号。然后我转向了一个基于git name-rev 的方法,起初这很棒,但后来我注意到这个名字有时会混淆:在将master 合并到暂存后,在两个分支上我的提示中都有master。鉴于我多么依赖这个,我不能拥有这个。但是使用 master~2 而不是 SHA1 数字真的很棒。

所以我希望有一种方法可以结合这两种方法。如果也可以显示标签名称,我会接受它(尽管我不经常使用它们 - yet)。最重要的是只有 git 命令,不查找 git 内部文件——它们可能会在某个时候改变。

感谢阅读!

【问题讨论】:

    标签: git branch command-prompt


    【解决方案1】:

    取自 zsh-git 存储库:https://github.com/jcorbin/zsh-git/blob/master/functions/zgitinit#L70

    name=$(git symbolic-ref -q HEAD)
    if [ $? -eq 0 ]; then
        if [[ $name == refs/(heads|tags)/* ]]; then
            name=${name#refs/(heads|tags)/}
        fi
    else
        name=$(git name-rev --name-only --no-undefined --always HEAD)
        if [ $? -ne 0 ]; then
            return 1
        elif [[ $name == remotes/* ]]; then
            name=${name#remotes/}
        fi
    fi
    

    你也可以考虑使用 zsh :)

    【讨论】:

    • 嗯,这可能会有一些不兼容 bash 的东西,但关键是你可以使用 git symbolic-ref,如果你得到错误结果,你应该使用 git name-rev,如图所示。
    • 其实我是。虽然不知道这个存在,稍后再试,谢谢:)
    【解决方案2】:

    看看 git describe:

    git describe HEAD --all --long
    

    您可以使用其他选项对其进行调整并获得一些不错的信息。如果您将它与 --tags 选项一起使用,您将获得与最新找到的标签的提交距离,例如

    $ git describe HEAD --tags
    1.1-4-g860832e
    

    在我的示例中,它表明我们在标签 1.1 之前有四个提交。它还在“g”之后的末尾显示 sha1 哈希,在这种情况下,这意味着短哈希是 860832e

    【讨论】:

      【解决方案3】:

      这是 zsh 答案的 bash 版本。我试图将其作为评论留下,但我无法在 cmets 中发布代码块。 :P

      name=$(git symbolic-ref -q HEAD)
      if [[ -n "$name" ]]; then
        name="${b#refs/heads/}"
      else
        name=$(git name-rev --name-only --no-undefined --always HEAD)
        name="${name#tags/}"
        name="${name#remotes/}"
      fi
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-06
        • 1970-01-01
        • 2014-11-22
        • 1970-01-01
        • 2014-05-24
        • 2017-06-30
        • 1970-01-01
        • 2013-03-05
        相关资源
        最近更新 更多