每次我都看到merged
关于我在 Gerrit 中的变化的状态,我确实git pull origin
,我可以清楚地看到,我的更改/分支实际上尚未合并到 master 中。
请检查我的 Gerrit 工作流程并告诉我,我做错了什么或缺少什么:
-
在本地创建并签出分支。
git checkout -b 77-blah
-
Do 魔术并评论所有更改。
git commit -am "changes to 77-blah"
使用 UI 创建相同的分支并将其修订版设置为HEAD
(this 应该很快就会实现自动化 https://stackoverflow.com/a/20606539/1469208).
-
将更改(特定分支)推送到 Gerrit,并使用适当的 refs refs:
git checkout 77-blah
git push origin HEAD:refs/for/77-blah
访问 Gerrit 给我的 URL,查看我的更改或等待其他人查看。
再次访问更改的 URL,确保Status = Merged
.
-
从 Gerrit 中提取最新更改:
git checkout master
git pull origin
最后一个命令的结果以Already up-to-date
,这(如果我不傻的话)意味着我的主人是最新的。在正常的 Git 存储库中,此时这是正确的。我的master
分支将变得最新,我最新的(77-blah
) 分支已经合并到其中。
在 Gerrit 上,我正在刷新我的网页,我目前正在其中工作(当我在master
)却发现,在该特定分支中引入的所有更改都消失了,并且整个网站处于创建最新分支之前的状态。格里特仅索赔,那个我的master
已是最新。
我可以确认,通过执行git branch -d 77-blah
并得到结果:
error: The branch '77-blah' is not fully merged.
If you are sure you want to delete it, run 'git branch -D 77-blah'.
实际上,我必须手动合并最新的分支本地。我缺少什么?
(用 Gerrit 术语来说)改变是什么意思merged,而实际上没有合并 at all?
您的几个类似问题中的一个共同主题似乎是您认为您应该将本地主题分支推送到 Gerrit 中具有相同名称的分支,并提交更改(即使更改显示为Merged) 意味着 Gerrit 应该将更改合并到master
。这是不正确的。
当你推到refs/for/whatever
然后提交该更改,提交最终会出现在分支上whatever
. Not master
。如果您希望更改最终在master
你应该推动refs/for/master
。所以,Git 声称master
是最新的是正确的(该分支不受您提交更改的影响77-blah
)并且 Gerrit 声称您的更改已被合并也是正确的(更改已合并到77-blah
).
本地主题分支与服务器上维护的分支无关。他们之间存在一对一的关系是不寻常的,也是很少见的。事实上,在 Gerrit 服务器上创建分支(即拥有 Push 权限)refs/heads/*
) 通常是大多数用户无法执行的特权操作。他们能做的就是推动refs/for/*
上传他们的更改以供审核。他们当然可以在本地创建他们想要的任何分支。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)