假设我有一个提交的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直接引用时。
答案 0 :(得分:1)
好像你已经(几乎)回答了你自己的问题。
git ls-remote | grep 67b4b77655d65004cc908aaf7e65b24bcaa81fd8 | awk '{system("git fetch origin " $2)}' && git checkout 67b4b77655d65004cc908aaf7e65b24bcaa81fd8