在git标记上查找新的提交ID

时间:2014-09-10 09:35:30

标签: git

在每次发布期间,我都会检查上一个标记,挑选新的提交ID并创建新标记并进行发布。例如,如果我以前的版本名称是Tag.1.15.50.31。这就是我要做的事情,

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中找到新挑选的commit-id(即new-commit-id-1和new-commit-id-2)?

1 个答案:

答案 0 :(得分: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操作创建的修订。