关于git gerrit的客户端push问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于git gerrit的客户端push问题相关的知识,希望对你有一定的参考价值。

$ git push
Counting objects: 16, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 329 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Processing changes: refs: 2, done
To ssh://user@192.168.2.235:29418/test_project.git
! [remote rejected] dev1 -> refs/for/dev1 (no new changes)
! [remote rejected] master -> refs/for/master (duplicate request)
error: failed to push some refs to 'ssh://user@192.168.2.235:29418/test_project.
git'

我想问为啥我master会被拒绝??本人新手。。

参考技术A remote: Resolving deltas: 100% (2/2)
error: unpack failed: error Missing unknown 613fd2557fba30aff2dbd51c3807cc57561bab08
fatal: Unpack error, check server log
To ssh://newptone@review.ustack.com:29418/neutron.git
! [remote rejected] HEAD -> refs/publish/datong (n/a (unpacker error))
error: failed to push some refs to 'ssh://newptone@review.ustack.com:29418/neutron.git'

Git push remote rejected {change ### closed}

是因为和关掉的提交对应的Change_id一样导致的。

另一种可能是cherry-pick导致的:

之前提交的时候因为有merge,所以在gerrit服务器上审核的时候,我给abandoned了,因此从新处理提交的时候就出现了相同的tree, parent, author, committer以及log原文,这也就不难怪change-id也相同了。

添加一次可能导致Change-ID相同的情况,新的分支的提交是从另外的分支上cherry-pick过来的,所以当abandoned一次之后,再次cherry-pick时,Change-ID作为提交记录一并cherry-pick过来了,所以会重复。

 

简单的办法就是执行git commit --amend 删掉change_id就可以了,保存退出后会自动生成一个新的change_id,再次执行push就可以推到库了。

参考:

https://stackoverflow.com/questions/11972384/git-push-remote-rejected-change-closed

以上是关于关于git gerrit的客户端push问题的主要内容,如果未能解决你的问题,请参考以下文章

Android studio配置push commits

git修复push文件

Git push remote rejected {change ### closed}

Gerrit安装与做冷备份实战

Linux 下安装 Gerrit

ABAP git客户端