仅使用其提交ID从Gerrit存储库中提取提交

时间:2014-09-24 16:07:50

标签: git gerrit

假设我有一个提交的SHA1,它在Gerrit的代码审查中,但不是它的引用(refs / changes /...)

问题是:如何从我的本地存储库中获取它?

这里有一个类似的问题,但Gerrit无关的问题:Retrieve specific commit from a remote Git repository

答案似乎不适用于Gerrit:

git fetch origin 67b4b77655d65004cc908aaf7e65b24bcaa81fd8:refs/remotes/origin/foo
fatal: Couldn't find remote ref 67b4b77655d65004cc908aaf7e65b24bcaa81fd8

如果我使用git ls-remote:

,我可以看到提交
git ls-remote | grep 67b4b77655d65004cc908aaf7e65b24bcaa81fd8
From ssh://gerrit/repo
67b4b77655d65004cc908aaf7e65b24bcaa81fd8        refs/changes/...

因此看起来格里特在显式提取过程中不会在refs / changes /中查找。

当然,作为一种解决方法,我可以使用其refs / changes / ...引用获取提交,但我想知道是否有更直接的方式,更重要的是,当Gerrit没有找到提交时当由SHA1直接引用时。

1 个答案:

答案 0 :(得分:1)

好像你已经(几乎)回答了你自己的问题。

git ls-remote | grep 67b4b77655d65004cc908aaf7e65b24bcaa81fd8 |  awk '{system("git fetch origin " $2)}' && git checkout 67b4b77655d65004cc908aaf7e65b24bcaa81fd8