显示git分支名称或提交ID

时间:2017-12-01 11:07:00

标签: git shell command-prompt

我想在显示当前分支名称时重现shell提示符的行为。 我在这里使用鱼,但大多数外壳都有这个功能。 fish prompt

如果我使用命令

git rev-parse --abbrev-ref --verify HEAD

它让我回头

  

好!

现在,如果我签出旧提交,我的提示会显示 fish prompt

如果我再次运行上面的命令,则返回

  

HEAD

这不是我想要的。我希望3171f5a就像提示一样。所以我得到了一个新命令。

git rev-parse --short --verify HEAD
  

3171f5a

尼斯!但如果我回到主人那就给我了

  

617ca76

您是否知道是否有命令直接向我提供输出,而没有if语句检查返回值是否为HEAD。 (缩短哈希是否正常)

非常感谢

2 个答案:

答案 0 :(得分:1)

在shell中执行此操作的单行方法是使用两个单独的Git命令:

Assert.Fail("Something is foo.{0}", message?.Prepend(" "));

在分离的HEAD情况下​​,git symbolic-ref --short -q HEAD || git rev-parse --short HEAD 命令失败(git symbolic-ref阻止它向stderr抱怨),第二个-q命令继续打印缩短的哈希ID。

请注意,当您在未出生的分支上时,git rev-parse命令会成功,您将获得未出生分支的(缩短)名称。

答案 1 :(得分:0)

git提示逻辑通常包含在函数中的原因是它不像单个git命令那么简单。你可以接近像

这样的东西
git log -n 1 --format="%D>%h" |cut -d'>' -f2

但是看着这个我不禁认为它有点脆弱(你可能会得到一些不需要的空白区域)。

不使用if(或等效的东西)的约束在这里可能不完全切合实际。