Git 帕奇没有被推给杰瑞特

Git 帕奇没有被推给杰瑞特,git,gerrit,Git,Gerrit,在尝试推送修补程序时,出现以下错误: 错误:无法将某些引用推送到 'ssh://git_bare_repo@10.20.88.250/家庭/法拉利用户/git_bare_repo/android_m/hlos/platform/frameworks/base' 提示:更新被拒绝,因为推送的分支提示位于其后面 远程提示:对应。查看此分支并集成 远程更改提示:(例如“git pull…”),然后再次按下。提示: 有关详细信息,请参阅“git push--help”中的“关于快进的说明” 当我调试时,

在尝试推送修补程序时,出现以下错误:

错误:无法将某些引用推送到 'ssh://git_bare_repo@10.20.88.250/家庭/法拉利用户/git_bare_repo/android_m/hlos/platform/frameworks/base'

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

远程提示:对应。查看此分支并集成

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

有关详细信息,请参阅“git push--help”中的“关于快进的说明”

当我调试时,我发现GerritCommit的一个引用实际上是通过gerrit删除的,但并没有反映在Git中

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

EEC904656F3426CD5A45E5333CEC90F07982C1参考文献/变更/68/1968/1

所以,第一个问题是,如果我们放弃任何补丁,条目是否仍然存在于refs文件夹中,是否有任何文件列出了被放弃的补丁

我认为这就是为什么具体项目无法同步,我们无法推动新的变化的原因

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

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

cdd319b12cc422541b101e25470317ca28ddf6bc
参考文献/for/8939_ferrari_main

但它并没有被列入gerrit。 有没有办法从git bare repo中删除这个补丁,因为它没有在Gerrit中列出

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


编辑


有没有办法将git裸回购重置为任何特定的标签?

要将裸回购重置为特定的标签,您需要在REF/heads/BRANCH上具有
强制推送
访问权限

警告这将使您失去在标记之后所做的提交!
git克隆
切换到主分支
git重置——硬
git push--强制原点磁头:参考/磁头/主磁头

放弃的更改不是原因。Gerrit会永久保留放弃的更改和引用,如
refs/changes/68/1968/1
,因为Gerrit允许“恢复”放弃的更改。如果分支
foo
已由
git push-f
更新,那么新提交肯定不会被审查
gitpush-f
表示不为新提交创建Gerrit条目的直接推送。只有“git push origin foo:**refs/for/foo**”推送的提交才能被查看并具有Gerrit条目。很抱歉造成混淆,用于推送的命令是:git push-f origin HEAD:refs/for/8939_ferrari_main。通过使用此命令,repo sync仍然无法将代码与最新修补程序同步。从错误中,我猜本地分支位于远程分支之后。可能没有新的本地提交。尝试
git fetch origin 8939_ferari_main&&git log fetch_HEAD…HEAD
并查看是否打印了任何提交。如果没有,则不必推送本地分支,因为远程分支具有本地分支的所有提交。感谢Elpiekay,git fetch origin 8939_ferrari_main&&git log fetch_HEAD…HEAD命令的输出没有显示任何内容。但是我正在尝试推送一个新的提交,即使我们得到了相同的快进错误,假设新的提交是xxxxxx。git fetch origin 8939\u ferari\u main和git merge base xxxxxx fetch\u HEAD命令打印什么?如果它是正确的xxxxxx,那么它就不是远程8939_法拉利主站的“新”。谢谢,尝试过,但没有用。我最担心的是,这些补丁没有发送给Gerrit,尽管在公司的裸回购协议中有条目codebase@Anshul如果无法在gerrit上找到合并到裸回购中的提交的更改,这意味着,当推送时,你没有使用神奇的参考
refs/for/BRANCH
refs/drafts/BRANCH
当推送时,如果你写了
refs/heads/*并直接推送到裸回购
git clone <REPO>
git checkout master
git reset --hard <TAG>
git push --force origin HEAD:refs/heads/master