我刚开始使用gerrit,我想知道为什么我们需要做git push gerrit HEAD:refs/for/master而不是做git push origin master
如果我这样做,git push origin master我会收到错误说! [remote rejected] master -> master (prohibited by Gerrit)
无法在Gerrit上添加评论.它更像是草稿.我究竟做错了什么?我团队中的其他人可以添加评论.
在使用Gerrit(代码审查)时,我经常需要获取给定补丁集的副本以用于测试或验证目的.显而易见且最简单的方法是通过Gerrit Web界面下载存档或补丁文件,并手动将其应用到我的本地源.
虽然上述步骤非常简单并且满足了我的需求,但在最好的世界中,我希望将补丁集作为我本地Git中的提交出现.
我环顾四周,没有找到解决方案.我发现一些编译在一起的稀疏信息提供了以下解决方案.
假设您想要拉出Gerrit更改1222的补丁集2:
找到我们感兴趣的远程参考:
$ git ls-remote | grep 1220
From http://something.com:8081/MyProject
e2e0212a59240ac5cd7c11220c35542523f44b59 refs/changes/13/713/1
b8c4dceea5eaf1bad711b0ea6938c80ec932726a refs/changes/20/1220/1
6f20c182ec7f54a2aa9e8f6188a0eef1b0790df4 refs/changes/20/1220/2
ed94a98386d224ce3d86004ce99f61220905a077 refs/changes/22/1222/1
Run Code Online (Sandbox Code Playgroud)
拉参考:
git pull origin refs/changes/20/1220/2
Run Code Online (Sandbox Code Playgroud)
这将创建一个Git提交点,您最终可以进行rebase:
git rebase
Run Code Online (Sandbox Code Playgroud) 在将新分支推送到gerrit服务器时,我们遇到以下错误:
de@roma:~/git-hate/www$ git push origin landingpage
Counting objects: 149, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (73/73), done.
Writing objects: 100% (111/111), 2.77 MiB, done.
Total 111 (delta 68), reused 80 (delta 38)
remote: Resolving deltas: 100% (68/68)
error: unpack failed: error Missing tree 30c4809ade0b4b0c81cb7f882450774862b82361
fatal: Unpack error, check server log
To ssh://user@git-server/repository
! [remote rejected] landingpage -> landingpage (n/a (unpacker error))
error: failed to push some refs to 'ssh://user@git-server/repository'
Run Code Online (Sandbox Code Playgroud)
我们尝试将提到的树对象手动复制到远程git,但没有成功.
在gerrit方面,我们得到一个堆栈跟踪:
[2013-05-16 13:43:42,753] ERROR com.google.gerrit.sshd.BaseCommand …Run Code Online (Sandbox Code Playgroud) 我在远程存储库中设置了一个分支,并在该分支上进行了一些提交.现在我想将远程分支合并到远程主服务器.
以下是我的操作:
但是在第5步获取错误消息:
remote: Resolving deltas: 0% (0/12)
remote: ERROR: missing Change-Id in commit message
...
remote: Change-Id: I55862204ef71f69bc88c79fe2259f7cb8365699a
To ssh://prc@test.gerrit.xxx.com:29418/hello_git
! [remote rejected] HEAD -> refs/for/master (missing Change-Id in commit message)
Run Code Online (Sandbox Code Playgroud) 在Android的gerrit ex:link中,为了下载补丁,我看到了4个选项.
他们之间有什么区别?
这就是我对他们的看法.请澄清
我知道拉和结账不同于樱桃挑选.但他们有什么不同?
由于此错误,我在将更改从本地主服务器推送到远程主服务器时遇到问题:
remote: Processing changes: refs: 1, done
To ssh://xxxxx@gerrit.dev.xxxxx.net:29418/xxxxxx
! [remote rejected] HEAD -> refs/for/master (change 14823 closed)
error: failed to push some refs to 'ssh://xxxxx@gerrit.dev.xxxxx.net:29418/xxxxxx'
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?
git status表示我的分支在5个提交之前超过origin/master.
作为git最佳实践,应该经常提交,但要查看代码,您可能需要一次查看由多个提交组成的修补程序.有没有办法可以审查多个提交并立即合并或拒绝?
我正在使用Gerrit版本2.4.2.我有一个分支master,我创建了一个新的分支,称为 newbranch.然后我将一些更改推送到遥控器(Gerrit's)newbranch.在Gerrit中验证后,我将更改合并到newbranch.
不,我想合并newbranchto master,发送更新master(与更改合并newbranch),并删除newbranch分支.
我试过这样做:
git fetch
git checkout master
git merge newbranch
git push origin master:refs/for/master
Run Code Online (Sandbox Code Playgroud)
但格里特回复了这条消息:
! [remote rejected] master -> refs/for/master (no new changes)
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
对提交进行了更改,执行了提交修改.做推,我得到错误:
! [remote rejected] master -> refs/for/master (no changes made)
Run Code Online (Sandbox Code Playgroud)
检查提交消息中的更改ID,它仍然是有效的提交.
我已经尝试更改文件,检查它显示为更改,然后添加到暂存区域并完成另一个提交修改.再次尝试推送并获得相同的问题.不知道这个.
编辑:这是推动gerrit,而不是直接git.
我在跑:
git push origin master:refs/for/master
Run Code Online (Sandbox Code Playgroud)
获取原产地详细信息的结果是(公司详细信息已删除):
$ git remote show origin
* remote origin
Fetch URL: ssh://lytee@gerrit.mycompany.net:29418/myrepo
Push URL: ssh://lytee@gerrit.mycompany.net:29418/myrepo
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master rebases onto remote master
Local ref configured for 'git push':
master pushes to master (up to date)
Run Code Online (Sandbox Code Playgroud)