git - 如何在我的本地存储库之前修复 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'的尖端成为孤儿,但我在乎吗?
解决方案
因为你只是一个my_develop
注意:如果有帮助,我是唯一一个在“my_develop”上工作的人。
我推荐 git push 和 force 选项。
如果您只是其中之一,
my_develop
则可以使用诸如git push origin my_develop --force'
. 这对你的团队没有影响。rebase
将代码从主分支更新到功能分支(my_develop
)中是一个很好的做法。但你的分支以前绝不能合并任何东西。如果代码
develop
不稳定,请不要合并到您的功能分支中。
附言。您可以在最后一次提交时创建一个新分支,然后再从开发中合并并处理它。
推荐阅读
- java - 无法将文件保存到android中的外部存储目录
- angular - 在量角器中调用 getText() 时,ElementFinder 正在记录
- android - 如何在操作系统默认查看器中的 React Native 应用程序中显示图像?
- debugging - 为什么在 64 位 Windows 下使用 ApplicationVerifier 进行堆调试时,会将 32 位进程限制为 2 GiB 的虚拟内存?
- angular - Angular - 找出派生类是否实现了抽象类(router.component)
- c# - 使用 OwnerDrawText 模式定位和突出显示 TreeView 节点文本
- php - 在php中对具有来自同一数组的多个依赖项的数组项进行排序
- xml - 如何使用 Xmlint 从 XML 文件映射某个值?
- angular-material - 如何更改 matInput 占位符的颜色?
- reactjs - 在 ReactJS 中获取没有 TypeScript 的 Fluent UI 下拉列表的价值