Git:如何使用给定的Change-Id查找提交?

时间:2017-10-29 03:50:08

标签: git gerrit

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

有没有办法:

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

1 个答案:

答案 0 :(得分:2)

编辑:在我发布这个答案后,@ 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