在每次发布期间,我都会检查上一个标记,挑选新的提交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)?
答案 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
操作创建的修订。