Git:如何查找具有给定 Change-Id 的提交?
Git: How to find commits with given Change-Id?
Gerrit 会自动在每个新提交的提交消息中添加一个 Change-Id: I....
行。当一个提交被挑选到多个分支中时,该行将保留在其消息中。
有什么办法可以:
- 查找具有给定 Change-Id 的所有提交
- 找到具有给定 Change-Id 的特定分支上的提交
- 指定具有给定 Change-Id(在特定分支上)的提交作为修订参数(例如
git cherry-pick {[dev-branch::]Change-Id: Ixxxx}..master
)
编辑:在我发布这个答案后,@lz96 建议:
git --no-pager log --format=format:%H -1 --grep "Change-Id: "
这绝对是最干净的方式!
这是我原来的回答:
我想不出一个简单的方法来一步完成,所以这里有两个:
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: " | head -n 1 | cut -d ' ' -f 2)
}
这也让您不必在一行中途插入 Change-Id
。
Gerrit 会自动在每个新提交的提交消息中添加一个 Change-Id: I....
行。当一个提交被挑选到多个分支中时,该行将保留在其消息中。
有什么办法可以:
- 查找具有给定 Change-Id 的所有提交
- 找到具有给定 Change-Id 的特定分支上的提交
- 指定具有给定 Change-Id(在特定分支上)的提交作为修订参数(例如
git cherry-pick {[dev-branch::]Change-Id: Ixxxx}..master
)
编辑:在我发布这个答案后,@lz96 建议:
git --no-pager log --format=format:%H -1 --grep "Change-Id: "
这绝对是最干净的方式!
这是我原来的回答:
我想不出一个简单的方法来一步完成,所以这里有两个:
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: " | head -n 1 | cut -d ' ' -f 2)
}
这也让您不必在一行中途插入 Change-Id
。