[英]Git: How can I cleanly depend on a PR that hasn't merged?
目的是保持工作流程高效和历史记录干净。
常见问题
我要介绍的几个小功能将相互依赖,并且我不想在等待第一个合并的第二个PR上受阻(我希望它位于单独的分支中)。
为了澄清,我需要添加2(+)个功能: feature-1
和feature-2
。 feature-2
取决于feature-1
。 它们都将驻留在不同的分支上,并且可能需要几天的时间才能接受feature-1
的PR。 我想在等待的同时处理feature-2
(一个单独的分支),与此同时, feature-1
可能需要进行一些必要的更改,这些更改应渗透到feature-2
。
3个解决方案 :
feature-1
分支feature-2
several-features
”的分支,然后将分支合并到那里,然后再将其合并为master
。 master
在其中我可以乐观地合并feature-1
,然后在需要传播对-1
的更改时可以重新合并回feature-2
。 我当前的解决方案是后者:
从master
创建分支feature-1
编写代码,推送它,然后启动PR
在等待合并时将其本地合并到master
从那个feature-2
分支(现在这取决于feature-1
)
如果要求对feature-1
更改,请对其进行修复,乐观地合并回master
,合并回feature-2
,并在feature-1
遇到feature-2
需要的东西IE时始终执行此操作,即始终通过本地(-仅)主版。
我不喜欢我的主人的历史与官方的历史有所不同,但是由于git就像仅附加(大多数)的vcs,而且我认为commit是一种关联操作...他们的历史实际上就是相同?
我希望我理解了这个问题。...但是我将解释如何轻松地处理此工作流程。
如果从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
这些是基础。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.