git - Git:我怎样才能完全依赖尚未合并的 PR?
问题描述
目标是保持工作流程高效且历史记录干净。
一个常见的问题
我想介绍几个相互依赖的小功能,我不想在等待第一个合并的第二个 PR 上被阻止(我确实希望它位于单独的分支中)。
为了澄清,我需要添加 2(+) 个功能:feature-1
和feature-2
. feature-2
取决于feature-1
。这些都将存在于不同的分支上,并且可能需要几天时间feature-1
才能接受 PR。我想在feature-2
一个单独的分支上工作,同时等待,同时feature-1
可能有一些需要的更改应该渗透到feature-2
.
3个解决方案:
feature-2
我可以分支feature-1
- 我可以创建一个新分支“
several-features
”并在分支进入master
. - 我可以分支出一个
master
我乐观地合并到的本地,并在我需要传播更改的任何时候feature-1
合并回来。feature-2
-1
我目前的解决方案是后者:
创建一个
feature-1
分支master
写代码,推送,启动 PR
master
在等待它合并时将其在本地合并到从那个 a 分支
feature-2
(现在这取决于feature-1
)如果请求对 进行更改,请
feature-1
修复它们,乐观地合并回master
,合并回feature-2
,并在任何需要的时候执行此操作feature-1
,feature-2
IE 始终流经本地(仅)版本的 master。
我不喜欢我的主人会有与官方不同的历史,但由于 git 就像一个仅附加(大部分)的 vcs,而且我认为提交是一个关联操作......他们的历史实际上会是相同的?
解决方案
我希望我能理解这个问题......但我将解释如何轻松地处理这个工作流程。
如果从feat1 开始feat2,当你在feat2 上工作时,你可能会遇到一些场景:
场景 1:feat1 获得了一些额外的复活......小菜一碟:
git rebase feat1
场景 2:feat1 被移动了(可能是重新定位)。这涉及更多一点。我们甚至不确定 feat1 的修订是否在没有冲突的情况下被重新调整,我们现在只是分支被移动并且我们不知道其他任何事情(开发人员可能已经决定重新开始,因此原始修订没有任何关系到新的):
git rebase --onto feat1 old-tip-of-feat1 feat2 # ask git to move feat2 discarding all old revisions of feat1, and put them on top of feat1
实际上它不一定是分支的旧尖端,它可能是feat2历史上feat1的最后一个版本。
场景 3:feat1 被合并到 master。这很简单:
git rebase master
这些是基础。
推荐阅读
- javascript - React-Native:如何将组件中的项目与另一个组件中的项目绑定?
- python - 从 2 个列表中获取每个日期的总和
- oracle - 无效的标识符 IN_LIBRARY
- node.js - Botkit 回复图片
- ssl - 使用有效的通配符 SSL 证书为子域生成新证书
- ionic-framework - 'ion-option' 不是已知元素
- angular - Angular 7服务文件不保持变量状态
- java - 从 RequestBuilder 访问 JSON 响应
- c++ - 运行时检查失败 #2 - 变量“month1”周围的堆栈已损坏
- docker - 尝试连接到 Kubernetes 中的服务时连接被拒绝