如何将一个特定的提交移动到另一个分支



所以假设我有两个分支: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'是很容易的。只需在需要时挑选DF即可。或者完全合并分支dev。Git应该足够聪明,可以检测到master已经包含E的副本。

最新更新