2012-08-22 83 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的簡稱。

相關問題