首页 > 解决方案 > 如何在我的本地存储库之前修复 Git 上的远程分支而不进行拉取

问题描述

我正在与许多使用 git 的人一起开发一个项目。我远离团队,我们的工作方式是这样的:

1)他们从'develop'创建分支,然后在测试后将它们合并到'develop'并将其推送到原始仓库。这种情况经常发生。

2)我,每隔一段时间,创建我自己的开发分支:一个名为“my_develop”的分支。然后我创建分支,测试它们并将它们合并到“my_develop”中。

3)当他们更新'develop'时,我经常将'develop'合并到我的分支中(即,合并到my_develop)。这样可以最大限度地减少分歧,而无需每天将我的工作整合到开发中。

4)大约每月一次,我将“my_develop”推送到原点,发出拉取请求,它被合并到开发中 - 然后我从一个新的“my_develop2”开始,等等。

这是问题所在。简而言之,有一次,代码进入了开发阶段,其中有一些严重的问题在短时间内未被发现。然而,我已经将这个糟糕的“开发”分支合并到“my_develop”中,并将其推送到原点。它变成了一个功能问题,冻结了我的进度,所以我有一次在我的本地存储库上,在原点之前对“my_develop”的三个提交进行了“git reset”。

现在的问题是我无法将“my_develop”推送到原点。它反对,理由是原点上的“提示”比我在本地的提交要多一些,并要求我拉动以整合分支“my_develop”上原点的更改。

当然,重点是我一直在进行增量开发,从原始内容返回了一些提交。此时,原点上的“my_develop”的 HEAD 已过时,拉动将撤消我在本地“实时”分支上所做的所有更改。

我看到人们提出了 3 条建议来解决这个问题:

1)做一个'git push origin my_develop --force'。从逻辑上讲,这就是我想要做的,但是有很多关于这样做的危险的警告。

2)一些建议说用变基来处理这个问题,尽管我不太明白如何做到这一点。

3) 选项#3 涉及使用“我们的”作为一种合并方式,但提供 git 指导来决定哪一行代码在合并冲突中“获胜”。

对最好的方法有什么建议吗?

注意:如果有帮助,我是唯一一个在“my_develop”上工作的人。

注意自从我第一次发布以来:我想我可以简单地进入我的分支('git checkout my_branch'),然后创建一个新分支('git checkout -b my_latest_branch'),然后简单地从那个分支开始工作 - 然后将其推送到源并发出拉取请求。这会使'my_branch'的尖端成为孤儿,但我在乎吗?

标签: gitgithubgit-merge

解决方案


因为你只是一个my_develop

注意:如果有帮助,我是唯一一个在“my_develop”上工作的人。

我推荐 git push 和 force 选项。

  1. 如果您只是其中之一,my_develop则可以使用诸如git push origin my_develop --force'. 这对你的团队没有影响。

  2. rebase将代码从主分支更新到功能分支(my_develop)中是一个很好的做法。但你的分支以前绝不能合并任何东西。

  3. 如果代码develop不稳定,请不要合并到您的功能分支中。

附言。您可以在最后一次提交时创建一个新分支,然后再从开发中合并并处理它。


推荐阅读