Git Gerrit没有';不接受新创建的更改/分支

Git Gerrit没有';不接受新创建的更改/分支,git,version-control,gerrit,Git,Version Control,Gerrit,我刚刚创造了一个新的变化,我想把它拉到Gerrit身上。我(我希望)是用通常的方式来做的,即创建新分支、施魔法、提交。现在,我想把改变推给Gerrit。所以 git checkout 82-changes-and-fixes-to-files-view git push origin HEAD:refs/for/82-changes-and-fixes-to-files-view (嘎吱,嘎吱) 找不到分支?陛下我突然想到,文档中提到了在推动更改之前,通过GerritUI手动创建一个分支。我说

我刚刚创造了一个新的变化,我想把它拉到Gerrit身上。我(我希望)是用通常的方式来做的,即创建新分支、施魔法、提交。现在,我想把改变推给Gerrit。所以

git checkout 82-changes-and-fixes-to-files-view
git push origin HEAD:refs/for/82-changes-and-fixes-to-files-view
(嘎吱,嘎吱)

找不到分支?陛下我突然想到,文档中提到了在推动更改之前,通过GerritUI手动创建一个分支。我说得对吗?不管怎样,我正在这样做。我正在通过UI创建一个分支,给它上面的名称(
82对文件视图的更改和修复
)和相应的修订,取自
git status
2b25fe7612f1563a78c9dc2d1574ae3dcfe9d5a1
)。而且,再一次

git push origin HEAD:refs/for/82-changes-and-fixes-to-files-view
(嘎吱,嘎吱)


Eee。。。我错过了什么?如果我还没有将任何代码推送到Gerrit UI中,Gerrit怎么能声称没有更改呢?(当然,上面的名称没有这样的更改,没有记录在Gerrit UI中的打开或合并更改中)?

这个问题的解决方案是始终使用当前头部的最后一个提交ID,不是提交给你的分支的那个。使用分支的最后一个提交ID是错误的。这超出了我的想象

因此,正确的路径是:

  • 使用UI创建分支并给出主管的修订
  • 将更改(该分支)推送到Gerrit,不要忘记正确的引用
  • 访问页面,这是Gerrit在推送后提供给您的URL,并查看您的更改或等待其他人查看
  • 或者,您只需单击
    创建分支
    ,将
    初始修订
    字段设置为空,这样Gerrit将自动填充该字段。然后再次按下
    Create Branch
    按钮


    编辑:此答案仅说明如何让Gerrit接受更改。它没有解释为什么在前面的方法中(有问题的解释),Gerrit声称没有更改,也不接受代码,而实际上它根本没有代码(对于特定的分支)。对我来说,这是一个巨大的bug,它会导致代码丢失。(根据下面的评论不正确)

    此问题的解决方案是始终使用当前负责人的最后一个提交ID,而不是提交给分支机构的ID。使用分支的最后一个提交ID是错误的。这超出了我的想象

    因此,正确的路径是:

  • 使用UI创建分支并给出主管的修订
  • 将更改(该分支)推送到Gerrit,不要忘记正确的引用
  • 访问页面,这是Gerrit在推送后提供给您的URL,并查看您的更改或等待其他人查看
  • 或者,您只需单击
    创建分支
    ,将
    初始修订
    字段设置为空,这样Gerrit将自动填充该字段。然后再次按下
    Create Branch
    按钮


    编辑:此答案仅说明如何让Gerrit接受更改。它没有解释为什么在前面的方法中(有问题的解释),Gerrit声称没有更改,也不接受代码,而实际上它根本没有代码(对于特定的分支)。对我来说,这是一个巨大的bug,它会导致代码丢失。(根据下面的评论不正确)

    如果您创建了一个指向提交2b25fe76的新分支,那么在同一分支上推送相同的提交以供审查显然是不可行的,因为该分支已经指向该提交。正如Gerrit所说,没有新的变化。对我来说,真正的问题是,为什么我必须通过UI手动创建分支?为什么Gerrit自己无法处理这件事?我正在推动一个特定的分支,那么自动创建它的问题是什么呢?Magnus,再次阅读我的问题并修改答案。分支
    82文件视图的更改和修复第一次被拒绝,因为缺少,第二次(因为我将通过UI创建的分支指向错误的提交--
    2b25fe76
    )也被拒绝,因为没有更改。实际上,Gerrit在branch
    82更改和修复文件视图时没有任何字节的代码(由于两次尝试都被拒绝,因此没有实际推送此代码),但它声称自己有(没有更改)。这似乎是一个巨大的bug,或者我遗漏了一些明显的东西。
    git push
    命令在单个请求中发送要更新的引用和对象本身,因此Gerrit拒绝请求但将对象负载保留在其数据库中并不完全奇怪。由于您实际上能够从commit 2b25fe76启动一个分支,这意味着Gerrit确实接收并存储了有效负载,尽管此时commit未被引用,最终将被垃圾收集。有人可能会说Gerrit不应该保留被拒绝推送的打包文件,但这并不是一个巨大的bug,你声称它会导致代码丢失是完全没有根据的。@Magnubsäck再次感谢你解决了我与Gerrit之间的问题!:]如果您创建了一个指向commit 2b25fe76的新分支,那么在同一分支上推送相同的commit以供审阅显然是不可行的,因为该分支已经指向该commit。正如Gerrit所说,没有新的变化。对我来说,真正的问题是,为什么我必须通过UI手动创建分支?为什么Gerrit自己无法处理这件事?我正在推动一个特定的分支,那么自动创建它的问题是什么呢?Magnus,再次阅读我的问题并修改答案。分支
    82文件视图的更改和修复第一次被拒绝,因为缺少,第二次(因为我将通过UI创建的分支指向错误的提交--
    2b25fe76
    )也被拒绝,因为没有更改。实际上,Gerrit在branch
    82更改和修复文件视图时没有任何字节的代码(由于两次尝试都被拒绝,因此没有实际推送此代码),但它声称自己有(没有更改)。这似乎是一个巨大的bug,或者我遗漏了一些明显的东西
    
    git push origin HEAD:refs/for/82-changes-and-fixes-to-files-view
    
    ! [remote rejected] HEAD -> refs/for/82-changes-and-fixes-to-files-view (no new changes)