bash - 当分支和标签都指向同一个提交时,如何引用该分支?

标签 bash git

我编写了一个别名来输出 N 个最后 checkout 的分支

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/\*

关于bash - 当分支和标签都指向同一个提交时,如何引用该分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63035371/

相关文章:

BASH 脚本 : Explode string and save to file

python - 在 Python 代码中使用 Git 命令

bash - 测试变量是否是格式正确的日期

linux - Mutt 不会发送附件

bash - 使用 shell 脚本用点创建的目录名称

Git:另一个失去一切的例子?

merge 后 Git 显示错误的作者

git错误: fatal: unable to access 'https://dev.azure.com/****/' : Recv failure: Connection was reset while cloning

svn - 同步 Git 和 Svn

regex - 如何在 AWK 中用大括号包围所有空格填充的单词?