获取自最后一个标记以来的所有git提交

sc4hvdpw  于 2022-11-27  发布在  Git
关注(0)|答案(3)|浏览(103)

当我要标记一个提交时,我需要知道自从上次标记提交以来有什么改变。

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

js4nwp54

js4nwp541#

git log <yourlasttag>..HEAD
如果你想让它们像你的例子一样,在一行中包含commit id + message,那么
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,以便打印出其间的任何标记。

zf9nrax1

zf9nrax12#

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

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

请注意,@HEAD的缩写。

slsn1g29

slsn1g293#

您可以很容易地忽略带有sed的Merge提交

git log $(git describe --tags --abbrev=0)..@ --oneline | sed '/Merge/d'

相关问题