gpt4 book ai didi

git - 不允许所有父项都来自同一分支的 merge 提交

转载 作者:太空狗 更新时间:2023-10-29 14:07:48 26 4
gpt4 key购买 nike

我有 3 个分支,即 develop、feature、xyz。现在我在 xyz 分支工作并在这里提交。然后我按照这些步骤

git checkout feature
git merge xyz

-- 在这里它复制了那个提交并创建了另一个提交作为“merge :prev_commit latest_commit”。所以在 feature 中我有 2 个新提交意味着非推送提交。

git checkout develop
git merge xyz

-- 在这里它也做同样的事情。它复制了那个提交并创建了另一个提交作为“merge :prev_commit latest_commit”。所以在 feature 中我有 2 个新提交意味着非推送提交。

所以我尝试将我的更改推送到服务器。 xyzfeature 分支都在正确推送。但是 develop 分支无法推送更新的提交并显示如下错误。

"remote: Merge commits where all parents are from the same branch are not allowed."

请给我建议。提前致谢。

最佳答案

我强烈怀疑您遇到了远程存储库针对常见 Git 问题的防御机制:误 merge 。

许多 Git 用户更喜欢保持线性的,或者大部分是线性的历史,避免由开发人员执行 git pull --merge 引起的分散注意力、令人讨厌的“小型 merge ”而不是 git pull --rebase在将上游更改与其本地工作集成时。听起来好像您的远程仓库可能对这个常见问题进行了防御性检查。

可能,限制是特定于分支的:在 feature 上你被允许逃脱惩罚,但不是在develop上.

进一步假设,您的真正分支 merge 可能被误认为是滋扰 merge ,因为远程存储库不知道 xyz分支机构,或 xyz远程端的分支相对于本地分支已过时 xyz在您 push merge 时工作。

换句话说,在develop 上 merge 的第二个父级有一个 SHA 不对应于远程端的任何分支。也许 Remote 运行类似 git rev-parse --abbrev-ref <SHA> 的东西在那个 parent 身上,结果是空白的。

尽管你这么说xyz正在正确推送,顺序很重要:xyz必须先推送,这样分支在远程上是最新的,然后远程可以理解第二个 merge 父项指的是 xyz .

如果xyz是完全最新的,但 develop推送被拒绝,这表明 Remote 上的逻辑有问题。

(还有另一种可能性,即 xyz 在远程上不落后,而是领先。如果将过时的本地 xyz merge 到 develop 并推送,则该哈希不会不对应于远程上的当前 xyz。该散列指向 xyz 的中间某处。)

关于git - 不允许所有父项都来自同一分支的 merge 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22965399/

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