gpt4 book ai didi

git - 分支/更改未 merge ,但 Gerrit 声称,它是

转载 作者:太空狗 更新时间:2023-10-29 14:00:37 25 4
gpt4 key购买 nike

每次,我在 Gerrit 中看到我的更改的 merged 状态并且我执行 git pull origin,我可以清楚地看到,我的更改/分支实际上没有已 merge 到 master 中。

请检查我的 Gerrit 工作流程并告诉我,我做错了什么或者我遗漏了什么:

  1. 在本地创建并 checkout 分支。

    git checkout -b 77-blah

  2. 施展魔法并评论所有更改。

    git commit -am "changes to 77-blah"

  3. 使用 UI 创建相同的分支并将其修订设置为 HEAD(此 should be automated soon)。

  4. 使用适当的 refs 将更改(特定分支)推送到 Gerrit:

    git checkout 77-blah

    git push origin HEAD:refs/for/77-blah

  5. 访问 Gerrit 给我的 URL,检查我的更改或等待其他人检查它。

  6. 再次访问更改的 URL,确保 Status = Merged

  7. 从 Gerrit 中提取最新的更改:

    git checkout 大师

    git pull 源

最后一个命令的结果以 Already up-to-date 结尾,这(如果我不傻的话)意味着我的 master 是最新的。在正常的 Git 存储库中,此时,这是正确的。我的 master 分支将成为最新的,我最新的 (77-blah) 分支已经 merge 到它。

在 Gerrit 上,我正在刷新我目前正在工作的网页(当我在 master 上时)只是为了发现,在那个特定分支中引入的所有更改都消失了并且整个网站处于创建最新分支之前的状态。 Gerrit 只声称,我的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'.

实际上,我必须在本地手动 merge 我最新的分支。我错过了什么?

这意味着什么(在 Gerrit 术语中)更改被 merge ,而它实际上根本没有被 merge

最佳答案

在你的几个类似问题中的一个共同主题似乎是你认为你应该将你的本地主题分支推送到 Gerrit 中具有相同名称的分支,并且提交更改(即使更改显示为 Merged) 意味着 Gerrit 应该将更改 merge 到 master。这是不正确的。

当您推送到 refs/for/whatever 并稍后提交该更改时,提交最终会在分支 whatever 上结束。不是 master。如果您希望更改在 master 中结束,您应该推送到 refs/for/master。因此,Git 声称 master 是最新的是正确的(该分支不受您提交对 77-blah 的更改的影响)并且 Gerrit 声称您的更改已更新merged 也是正确的(更改已 merge 到 77-blah)。

本地主题分支与服务器上维护的分支无关。他们之间存在 1:1 的关系是不寻常的,而且很少有人希望这样做。事实上,在 Gerrit 服务器上创建分支(即拥有 refs/heads/* 的 Push 权限)通常是大多数用户无法执行的特权操作。他们可以做的是推送到 refs/for/* 以上传他们的更改以供审核。他们当然可以在本地创建他们想要的任何分支。

关于git - 分支/更改未 merge ,但 Gerrit 声称,它是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20607231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com