当一个分支和一个标记都指向同一个提交时,我如何引用该分支



我已经写了一个别名来输出最后签出的N个分支

git config --global alias.last '!f() { for i in $(seq 1 $1); do git name-rev --name-only @{-$i}; done; }; f'

并且它工作几乎良好。

$ git last 4
some-branch
some-other-branch
tags/some-tag^0
yet-another-branch

当然,问题是输出的第3行,当ref(在本例中为@{-3}(指向由标记和分支引用的提交时。它默认输出标记,而我更喜欢分支名称(如果有(。

我尝试了一些方法,即使用^{}来取消引用标记,但没有成功。

你有没有看到我遗漏了什么,知道如何取消引用这里的标签?


接受答案后更新:别名的工作版本

git config --global alias.last '!f() { for i in $(seq 1 $1); do git name-rev --name-only --exclude=refs/tags/* @{-$i}; done; }; f'

只允许分支:

git name-rev --name-only --refs=refs/heads/*

或排除标签:

git name-rev --name-only --exclude=refs/tags/*

最新更新