标记之间的Git日志

brvekthn  于 2022-12-02  发布在  Git
关注(0)|答案(6)|浏览(111)

我试图输出两个标记提交之间的日志。

mbell@cheetah [12:07:22] [/var/www/html/brone] [dev]
-> % git tag 
6.x-0.1
6.x-1.0-beta1
6.x-1.0-beta2
6.x-1.0-beta3
6.x-1.0-beta4
6.x-1.0-beta5
6.x-1.0-beta6
6.x-1.0-beta7
6.x-1.0-beta8
6.x-1.0-beta9

如果我接着做:
git log 6.x-1.0-beta8 6.x-1.0-beta9 > ~/gitlogbrone.txt
它会输出自repo开始以来的所有提交,这不是我想要的。我已经通读了git日志手册,但它没有太大帮助。

juud5qan

juud5qan1#

您需要省略号来表示范围。请尝试git log tag1..tag2

i34xakig

i34xakig2#

对@Yurii和@wilmol的答案进行了扩展,适用于那些对生成发行说明文件感兴趣并希望脚本可读且易于修改的用户。

export VERSION=$(git tag --sort=-committerdate | head -1)
export PREVIOUS_VERSION=$(git tag --sort=-committerdate | head -2 | awk '{split($0, tags, "\n")} END {print tags[1]}')
export CHANGES=$(git log --pretty="- %s" $VERSION...$PREVIOUS_VERSION)
printf "# 🎁 Release notes (\`$VERSION\`)\n\n## Changes\n$CHANGES\n\n## Metadata\n\`\`\`\nThis version -------- $VERSION\nPrevious version ---- $PREVIOUS_VERSION\nTotal commits ------- $(echo "$CHANGES" | wc -l)\n\`\`\`\n" > release_notes.md

上面的脚本在release_notes.md处生成一个markdown文件,如下所示:

🎁发行说明(14.2

变更

  • ABCDEFGHIJKLMNOP公司
  • ABCDEFGHIJKLMNOP公司
  • ABCDEFGHIJKLMNOP公司
  • ABCDEFGHIJKLMNOP公司
  • ABCDEFGHIJKLMNOP公司

元数据

This version -------- 14.2
Previous version ---- 14.1
Total commits ------- 5

我喜欢这种方法有几个原因:

  • 如果我感兴趣的两个标记之间有一个标记,我可以在运行最后两行之前手动设置$VERSION$PREVIOUS_VERSION
  • 通过一些调整,我可以对$CHANGES进行排序、筛选和修改,以满足我的特定需求。
n53p2ov0

n53p2ov03#

我用这个来获取最后两个标签之间的提交:

git log --pretty=format:%s `git tag --sort=-committerdate | head -1`...`git tag --sort=-committerdate | head -2 | awk '{split($0, tags, "\n")} END {print tags[1]}'` > change_log.txt
yvfmudvl

yvfmudvl4#

感谢@Noufal Ibrahim的解答。
我提交了一个文件并创建了一个新的标签。但在此之前,我需要列出并格式化最后一个标签创建后的所有提交。以下是我当时所做的:

$ git log <last_tag>..

请注意结尾处的双点(..

zqry0prt

zqry0prt5#

来自@wilmol的优化解决方案

git log --pretty=oneline `git tag --sort=-committerdate | head -1`...`git tag --sort=-committerdate | head -2 | tail -1`

我更喜欢在发行说明的脚本中使用以下代码:

git log --pretty=oneline `git tag --sort=-committerdate | head -1`...`git tag --sort=-committerdate | head -2 | tail -1` |cut -d " " -f 2- |grep -v "Merge pull request"

这一条给予了最后两个标记之间的清晰的提交历史,没有git has和merge行。

cunj1qz1

cunj1qz16#

我正在使用以下快捷方式
git log $(git tag |tail -1)..

相关问题