如何从最后一个标签获得所有提交?
当我要标记提交*时,我需要知道自上次标记提交后发生了什么变化。 例如:
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