补丁不会被推入Gerrit

时间:2018-07-13 07:59:50

标签: git gerrit

在尝试发布补丁时,出现以下错误:

  

错误:无法将一些引用推送到   'ssh://git_bare_repo@10.20.88.250/home/ferrari_users/git_bare_repo/android_m/hlos/platform/frameworks/base'

     

提示:由于推送的分支提示位于其后面,因此更新被拒绝

     

远程提示:对应。签出此分支并整合

     

远程更改提示:(例如'git pull ...'),然后再次按下。提示:

     

有关详细信息,请参见“ git push --help”中的“关于快进的注意事项”。

当我调试时,我发现了关于gerrit提交的引用,该引用实际上是通过gerrit放弃的,但是并没有反映在Git中。

我们仍然可以在 platform / frameworks / base.git / info / refs

中看到参考
  

eec90465656f3426cd5a45e5333cec90f07982c1 refs / changes / 68/1968/1

所以第一个问题是,如果我们放弃任何补丁,那么条目仍会出现在refs文件夹中,并且是否有任何文件列出了废弃的补丁?

我认为这是无法同步特定项目并且我们无法推动新更改的原因。

git pull和git checkout,指向已通过Gerrit成功合并的最后一个提交补丁。

我尝试使用 git push -f origin HEAD:refs / for / 8939_ferrari_main 进行强制推送,结果表明补丁推送成功,并且可以在 frameworks / base中看到它的条目.git / info / refs

  

cdd319b12cc422541b101e25470317ca28ddf6bc
  refs / for / 8939_ferrari_main

,但未在Gerrit中列出。 有什么办法可以从git裸仓库中删除此补丁,因为它未在Gerrit中列出。

如果可以共享任何指针来解决此问题,将不胜感激。


编辑

是否可以将git裸仓库重置为任何特定标签?

1 个答案:

答案 0 :(得分:0)

要将裸仓库重置为某个TAG,您需要在refs / heads / BRANCH上拥有force push访问权限。

警告,这将使您失去标记后所做的提交!

git clone <REPO>
git checkout master
git reset --hard <TAG>
git push --force origin HEAD:refs/heads/master