如何在不进行拉动的情况下在本地存储库之前在Git上修复远程分支

时间:2018-12-05 03:31:40

标签: git github git-merge

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

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

2)我经常在源头之外创建自己的开发分支:名为“ my_develop”的分支。然后,我从中创建分支,对其进行测试,然后将其合并到“ my_develop”中。

3)在更新“开发”时,我经常将“开发”合并到我的分支机构(即合并到my_develop中)。这样可以最大程度地减少分歧,而无需每天将我的工作整合到开发中。

4)大约每月一次,我将'my_develop'推到​​原始位置,发出拉取请求,然后将其合并到developer中-然后从新的'my_develop2'开始,等等。

这是问题所在。简而言之,在某一时刻,代码进入了开发过程,但其中存在一些严重的问题,这些问题很快就未被发现。但是,我已经将此错误的“ develop”分支合并为“ my_develop”,并将其推向了起源。变成了一个功能性问题,这冻结了我的进度,因此我在本地存储库中的某一点上,对“ my_develop”的提交做了一次“ git reset”操作,然后进行了三项提交。

现在的问题是我无法将'my_develop'推入原点。它的反对理由是,关于起源的“提示”比我本地的要先进一些,并要求我进行拉动以整合对分支“ my_develop”的起源的更改。

当然,要点是我从那时开始一直在进行增量开发,而从源头上回溯了一些承诺。在这一点上,起源上的“ my_develop”的HEAD已过时,而拉动将撤消我在本地“ live”分支上所做的所有更改。

我已经看到人们提出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”的尖端变成孤儿,但我在乎吗?

1 个答案:

答案 0 :(得分:0)

因为您只是my_develop上的一员

  

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

我建议使用强制选项进行git push。

  1. 如果您只是my_develop上的一员,则可以使用git push origin my_develop --force'之类的强制选项进行推送。这对您的团队没有影响。

  2. rebase是将代码从主分支更新到功能分支(my_develop)的一种很好的做法。但您的分支机构绝不能之前合并任何内容。

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

ps。您可以在最后一次提交之前创建一个新分支,然后再进行开发和工作合并。