如何从最后一个标签获得所有提交?

当我要标记提交*时,我需要知道自上次标记提交后发生了什么变化。 例如:

a87a6sdf87a6d4 Some new feature a87a6sdf87a6d3 Some bug fix a87a6sdf87a6d2 Some comments added a87a6sdf87a6d1 Some merge <- v1.4.0 

在这个例子中,我想知道3个最新的提交,或者能够打印如上所述的日志,如果有的话,它们都显示提交他们的标签。 当我看到有一个新的function添加,我会标记它的v1.5.0。

你怎么处理这个? 这是我应该如何使用标签? 我应该在标签信息中写什么? 我总是把它留空: git tag -a v1.2.3 -m ''

*是这个词吗? 那么changeset呢? 我已经看到它在mercurial

git log <yourlasttag>..HEAD

如果你想让他们像你的例子,在提交id +消息的一行,然后

git log <yourlasttag>..HEAD --oneline

如果你不知道你最新的标签,或者希望这是dynamic的,你可以在windows上做

 for /f "delims=" %a in ('git describe --tags --abbrev^=0') do @set latesttag=%a git log %latesttag%..HEAD --oneline 

和在Linux上

 git log `git describe --tags --abbrev=0`..HEAD --oneline 

另外,如果你有一个你知道历史上的标签的情况,并且希望打印从该标签到当前情况的所有内容,你可能还需要添加--decorate以便打印它们之间的任何标签。

如果您当前的提交也是一个标记,并且您想要dynamic获取自上一个标记以来的更改,而不知道最新的标记或之前的标记名称,则可以执行以下操作:

git log `git describe --tags --abbrev=0 HEAD^`..HEAD --oneline