获取自上次标记以来的所有git提交

Cho*_*per 111 git version-control

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

a87a6sdf87a6d4 Some new feature
a87a6sdf87a6d3 Some bug fix
a87a6sdf87a6d2 Some comments added
a87a6sdf87a6d1 Some merge <- v1.4.0
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我想知道3个最新的提交,或者能够打印如上所述的日志,这表明它们都提交了它们的标签(如果有的话).当我看到添加了一个新功能时,我会将其标记为v1.5.0.

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

eis*_*eis 197

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
Run Code Online (Sandbox Code Playgroud)

并在linux/git bash/windows bash上

git log $(git describe --tags --abbrev=0)..HEAD --oneline
Run Code Online (Sandbox Code Playgroud)

此外,如果您有一个案例,您知道历史记录中的标记,并希望打印从该标记到当前情况的所有内容,您可能还想添加--decorate它以便打印出其间的任何标记.

  • 在 Powershell 中,将 git log 参数用引号引起来: `git log "$(git describe --tags --abbrev=0)..HEAD" --oneline` (2认同)

med*_*kch 31

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

git log --oneline $(git describe --tags --abbrev=0 @^)..@
Run Code Online (Sandbox Code Playgroud)

请注意,这@是简称HEAD.

  • 很好!,如果只是想将提交文本更改 --oneline 到 --pretty=format:"%s": git log --pretty=format:"%s" $(git describe --tags --abbrev=0 @ ^)..@ (2认同)