标签之间的Git日志

时间:2011-11-15 12:15:32

标签: git

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

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

它输出自回购开始以来的所有提交,这不是我想要的。我已经阅读了git log手册,但它没有多大帮助。

4 个答案:

答案 0 :(得分:119)

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

答案 1 :(得分:1)

我用它来获取最后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

答案 2 :(得分:1)

感谢@Noufal Ibrahim 的回答。

我正在提交一个文件并创建一个新标签。但在此之前,我需要在创建最后一个标签后列出和格式化所有提交。这是我当时所做的:

$ git log <last_tag>..
<块引用>

注意末尾的双点 (..)

答案 3 :(得分:0)

来自@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 行的最后两个标签之间给出了清晰的提交历史。