157

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

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 ''

4

2 回答 2

273

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它以便打印出介于两者之间的任何标签。

于 2012-08-22T23:59:02.373 回答
58

如果您当前的提交也是一个标签,并且您想动态获取自上一个标签以来的更改,而不知道最新标签或前一个标签名称,您可以这样做:

git log --oneline $(git describe --tags --abbrev=0 @^)..@

请注意,它@HEAD.

于 2015-07-30T09:17:31.397 回答