在尝试发布补丁时,出现以下错误:
错误:无法将一些引用推送到 '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裸仓库重置为任何特定标签?
答案 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