繁体   English   中英

Git:如何查找具有给定Change-Id的提交?

[英]Git: How to find commits with given Change-Id?

Gerrit会为每个新的提交自动在提交消息中添加一个Change-Id: I....行。 当一个提交被挑选到多个分支时,该行将保留在其消息中。

有什么办法可以:

  1. 查找具有给定Change-Id的所有提交
  2. 在具有给定Change-Id的特定分支上查找提交
  3. 使用给定的Change-Id(在特定分支上)指定提交作为修订参数(例如git cherry-pick {[dev-branch::]Change-Id: Ixxxx}..master

编辑:我发布此答案后,@ lz96建议:

git --no-pager log --format=format:%H -1 --grep "Change-Id: $1"

绝对是最干净的方法!


这是我的原始答案:

我想不出一个一步就可以做到的干净方法,因此有两个:

git log --grep "Change-Id: <id>"

这将显示具有此Change-Id参数的所有提交。 步骤1b:祈祷只有一个。

步骤2: git cherry-pick <sha>


这是我丑陋的单步执行器:

git cherry-pick $(git log --grep "Change-Id: <id>" | head -n 1 | cut -d ' ' -f 2)

您可能将其变成一个函数,以隐藏所有复杂性:

function changepick() {
  git cherry-pick $(git log --grep "Change-Id: $1" | head -n 1 | cut -d ' ' -f 2)
}

这也给您带来了不必在一行的中间插入Change-Id的好处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM