Gerrit会自动在提交消息中为每个新提交添加一条Change-Id: I....
行。当一个提交被挑选到多个分支时,这一行被保存在它的消息中。Git:如何使用给定的Change-Id查找提交?
有没有什么办法:
- 找到所有提交给定更改-ID
- 找到一个特定的分支提交给定更改-ID
- 指定给定更改-ID提交(在特定的分支)的修正参数(如
git cherry-pick {[dev-branch::]Change-Id: Ixxxx}..master
)
Gerrit会自动在提交消息中为每个新提交添加一条Change-Id: I....
行。当一个提交被挑选到多个分支时,这一行被保存在它的消息中。Git:如何使用给定的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
。
'git - 否 - pager log --format = format:%H -1 --grep“Change-Id:$ 1”'可能会更好? – lz96
是的,那更好! –
'git log --grep ='应该处理2.如果你在3中有相同的更改ID有多个提交,你会怎么做? – HuStmpHrrr
即使您更新了3,它也会使问题变得复杂,需要更复杂的决策程序。我不认为你可以做到这一点,没有包装在脚本内。 – HuStmpHrrr
'ssh -p @ gerrit查询更改:'。该端口默认为29418。您可以添加其他':',例如'branch:master'。 –
ElpieKay