2014-09-10 75 views
1

在每次發佈期間,我都會檢出前一個標籤,並向其中挑選新的提交標識並創建一個新標籤並進行發佈。例如,如果我以前的發行版名稱是Tag.1.15.50.31。這是我會做,在git標籤上查找新的提交標識

git checkout Tag.1.15.50.31 
git cherry-pick new-commit-id-1 
git cherry-pick new-commit-id-2 
. 
. 
. 
. 
so on. 

然後創建標籤,我會用

git tag -a Tag.1.15.50.32 -m 'drop 1.15.50.32' 

Tag.1.15.50.32後,我做了一些4版本,目前我在標籤號碼Tag.1.15.50.36。現在,如何在32(即new-commit-id-1和new-commit-id-2)中找到新挑選的提交ID?

回答

1

所以,你的意思是你有一個提交圖說是這樣的:

    - o - o  <-- various 
o - o - o - ... - o - o - o <-- branches 
    \   - o - o  <-- not especially interesting 
     \ 
     o <-- Tag.1.15.50.30 
     \ 
     o - o - o <-- Tag.1.15.50.31 (3 cherry picked commits) 
        \ 
        * - * <-- Tag.1.15.50.32 (2 cherry picked commits) 

,你想找到所有提交到達從Tag.1.15.50.32,排除所有來自Tag.1.15.50.31承諾到達,那麼這將是剛這裏有兩個提交標記爲*

命令git rev-list列出符合某些條件的修訂版本,並且gitrevisions具有生成修訂版本的語法,包括您正在尋找的版本。即,B選擇從B可到達的修訂,並且^A不包括從A可到達的修訂,因此B ^A產生這樣的列表;而特殊的短語句法A..B表示B ^A

這樣:

git rev-list Tag.1.15.50.31..Tag.1.15.50.32 

應該只列出由git cherry-pick行動創建的修訂。