gpt4 book ai didi

Git pull --rebase 生成冲突循环

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

我确定我做错了什么,但这是正在发生的事情。

我的团队有一个开发分支,我们从该分支创建功能分支。

我正在开发一项功能,但每次我尝试从开发中 pull --rebase 时,我都会遇到一堆冲突。

我解决了所有的冲突并尝试 push 功能。一条消息说我的分支的尖端在功能的后面,我应该从它那里 pull 出来。

  hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.

我从中提取(没有 rebase )并遇到了更多的冲突,我解决了。

现在我可以推送功能了。

此时一切都已同步并且工作正常。但是,如果我从事一些本地工作并尝试从开发中 pull --rebase,我会再次遇到大量冲突,包括一些我已经解决的冲突(我确实已经解决了)。

我在这里搞砸了什么?

最佳答案

当您将一个分支 rebase 到另一个分支时,您通常重写该分支的历史。结果,正常的推送将失败,因为 Git 会认为您的分支与远程上的分支不同。而不是这样做:

git push origin feature

你应该这样做:

git push --force origin feature

强制推送有潜在的不良副作用,但是如果您是唯一一个在该功能分支上工作的人,那么这没关系。

就图表而言,为了更好地理解这里发生的事情,请考虑以下内容:

develop: ... A -- B
\
feature: C

由于您从 develop 分支了 feature,因此您添加了一个新的 C 提交。此外,其他人(也许还有您)已将 B 提交添加到 develop。现在,你在 develop 上 rebase feature:

develop: ... A -- B
\
feature C'

将新的功能 与重新定位之前的功能进行比较。您的新 C' 提交现在位于新基础之上,即 B 提交,当您推送时,Git 会拒绝它。 Git 将看到共同的 A 提交祖先,但它不知道如何应用新提交,如果没有 merge ,这将破坏 rebase 的意义。

关于Git pull --rebase 生成冲突循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50166999/

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