我正在尝试在两个标记的提交之间输出日志.
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
Run Code Online (Sandbox Code Playgroud)
如果我那么做:
git log 6.x-1.0-beta8 6.x-1.0-beta9 > ~/gitlogbrone.txt
它会自回购开始以来输出所有提交,这不是我想要的.我已经阅读了git log手册,但它并没有多大帮助.
Nou*_*him 133
您需要省略号来指示范围.试试git log tag1..tag2.
Mat*_*lda 21
对于那些有兴趣生成发行说明文件并想要一个可读且易于修改的脚本的人来说,对 @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
Run Code Online (Sandbox Code Playgroud)
上面的脚本生成一个 markdown 文件,release_notes.md如下所示:
14.2)This version -------- 14.2
Previous version ---- 14.1
Total commits ------- 5
Run Code Online (Sandbox Code Playgroud)
我喜欢这种方法有几个原因:
如果我感兴趣的两个标签之间有一个标签,我可以在运行最后两行之前手动设置$VERSION和。$PREVIOUS_VERSION
通过一些调整,我可以排序、过滤和修改$CHANGES以满足我的特定需求。
感谢@Noufal Ibrahim的回答。
我正在提交一个文件并创建一个新标签。但在此之前,我需要列出并格式化最后一个标签创建后的所有提交。这是我当时所做的:
$ git log <last_tag>..
Run Code Online (Sandbox Code Playgroud)
..注意末尾的双点 ( )
我用它来获取最后 2 个标签之间的提交:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45377 次 |
| 最近记录: |