【问题标题】:github - can't resolve conflicts and merge after downgradegithub - 降级后无法解决冲突和合并
【发布时间】:2021-10-24 21:03:06
【问题描述】:

我已降级 django 并在我的最新分支(个人项目)中构建了一个大型功能。 Github 希望我在合并之前解决冲突。我尝试按照说明进行操作,但陷入了无限循环。

他们的指示:

Step 1: From your project repository, bring in the changes and test.
a)git fetch origin 
b)git checkout -b foobranch origin/foobranch 
c)git merge main

Step 2: Merge the changes and update on GitHub.
a)git checkout main
b)git merge --no-ff foobranch 
c)git push origin main

我已经完成了所有这些,最后,它以错误方式拒绝了我:

更新被拒绝,因为您当前分支的尖端落后

'git pull ...') 再次推送之前

我做了“git pull”,所有的冲突都回来了。回到第一格...

我尝试使用 Github Desktop,它并排显示差异,但无法选择我想要的版本并推送/合并。

请帮忙,我如何在 Github 上推送我的最新分支?

【问题讨论】:

    标签: git github


    【解决方案1】:

    说明中可能存在错误,假定您的本地 main 副本是最新的。

    修复它:

    1. 首先删除 mainfoobranch 的本地副本,以便重新开始。
    2. 现在将步骤 1c 更改为 git merge origin/main

    为什么会这样:

    您的main 副本已过期。任何时候你想使用main,但你不需要检查它,你应该使用origin/main。当您确实需要它时,将其删除并再次检出将使其与您刚刚在步骤 1a 中获取的 origin/main 保持同步。请注意,您可以签出main,然后签出pull,这也会更新它,但如果您自己对其进行了任何合并,这将创建一个您通常不想要的合并提交。

    注意事项:取决于您完成说明所需的时间以及提交在 main 上的显示速度,当您进入第 2c 步时,您可能会用完再次约会。如果发生这种情况,如果你愿意,你可以重新开始,下一次做得更快。您甚至可以编写脚本,这样运行只需几秒钟。

    提示:请考虑在完成后立即删除 main 的本地副本。这样,您将永远不会拥有它的过时副本。下次查看时,它将与origin/main 相同。

    旁注:建议您删除 mainfoobranch 的本地副本是假设您在这些分支上没有需要保留的新提交,这似乎是真的从问题。话虽这么说,如果您删除它们,然后发现您有想要取回的东西,您可以使用 git reflog 来帮助您找到这些提交。

    【讨论】:

    • 感谢@TTT 的详细回答。在我看到你的消息之前我已经整理好了。我冒着风险,按照stackoverflow.com/questions/39389094/…强行推了它。您的回答有道理,而且看起来更恰当,我将其标记为正确。
    • @kaka 小心强制推送。通常,您很少希望强制推送共享分支,例如main。 (通常main 也会受到保护以防止它发生。)
    猜你喜欢
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2019-05-26
    • 2016-03-04
    • 2012-10-24
    • 2012-03-01
    • 1970-01-01
    • 2019-04-19
    相关资源
    最近更新 更多