当我要标记提交时,我需要知道自上次标记提交以来发生了什么变化。例如:
a87a6sdf87a6d4 Some new feature
a87a6sdf87a6d3 Some bug fix
a87a6sdf87a6d2 Some comments added
a87a6sdf87a6d1 Some merge <- v1.4.0
在这个例子中,我想知道3个最新的提交,或者能够打印如上所述的日志,这表明它们都提交了它们的标签(如果有的话)。当我看到添加了一个新功能时,我会将其标记为v1.5.0。
你是如何处理的?这是我应该如何使用标签?我应该在标签消息中写什么?我总是把它留空:git tag -a v1.2.3 -m ''
答案 0 :(得分:183)
git log <yourlasttag>..HEAD
?
如果你想要它们在你的例子中,在一行上有提交id +消息,那么
git log <yourlasttag>..HEAD --oneline
如果你不知道你的最新标签或想要它是动态的,你可以在Windows上做
for /f "delims=" %a in ('git describe --tags --abbrev^=0') do @set latesttag=%a
git log %latesttag%..HEAD --oneline
和linux / git bash / windows bash
git log $(git describe --tags --abbrev=0)..HEAD --oneline
此外,如果你有一个案例,你知道历史记录中的标签,并希望打印从该标签到当前情况的所有内容,你可能还要添加--decorate
,以便打印出其间的任何标签
答案 1 :(得分:30)
如果您当前的提交也是一个标记,并且您希望动态获取自上一个标记以来的更改,而不知道最新标记或以前的标记名称,则可以执行以下操作:
git log --oneline $(git describe --tags --abbrev=0 @^)..@
请注意,@
是HEAD
的缩写。