所以假设我有两个分支:Master、dev。提交如下所示:
主:A-B-C
dev:AB-C-D-E-F
我只想把E提交从开发分支转移到Master,如下所示:
Master:A-B-C-E
dev:AB-C-D-E-F
我知道,如果提交E所需的提交D中有一些更改,这可能会导致问题,但在我的情况下,我确信提交E与提交D无关。
一段时间后,当D和F提交也准备好转移到主分支时,我想合并它们,而不会出现任何问题,比如:
主:A-B-C-D-E-F
dev:AB-C-D-E-F
如果没有简单的方法可以做到这一点,我可以理解,因为在大多数情况下这都没有意义。对任何可以帮助我的特定情况的解决方案持开放态度,我确信提交E与提交D无关。
您可以在master上运行cherry-pick
:
git checkout master
git cherry-pick E
这将在master上创建一个commit E的副本(如果您愿意,则作为commitE'
(。新历史:
Master : A-B-C-E'
dev: A-B-C-D-E-F
但请注意,将master作为A-B-C-D-E-F
是不容易的。然而,将master作为A-B-C-E'-D'-F'
是很容易的。只需在需要时挑选D
和F
即可。或者完全合并分支dev
。Git应该足够聪明,可以检测到master已经包含E
的副本。