2012-08-22 54 views
69

当我要标记提交*时,我需要知道自上次标记提交后发生了哪些更改。例如:自上次标记以来获取所有git提交

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

回答

136

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 log `git describe --tags --abbrev=0`..HEAD --oneline 

另外,如果您有一个案例,您知道历史中的某个标签,并且想要打印该标签中的所有内容以及当前情况,则可能还需要添加--decorate,以便打印出之间的任何标签。

+0

有没有什么办法可以跳过合并提交? – Holloway

+0

@Trengot不知道,没有看过。无论如何,IMO合并提交是可以避免的,我会尽可能使用rebasing。 – eis

+0

linux版本也适用于Git for Windows Bash – kwesolowski

17

如果您目前的承诺也是一个标签,你想动态获取自上次标签的变化,不知道最新的标签,也没有以前的标签名称,你可以这样做:

git log --oneline $(git describe --tags --abbrev=0 @^)[email protected] 

注意@HEAD的简称。

相关问题