如何在 Git 的分支之间移动提交?

问题描述 投票:0回答:1

我确信这是一个简单的问题,已被询问和回答,但我不知道要搜索哪些术语。我有这个:

    /--master--X--Y
A--B
    \--C--D--E

我在一个分支上提交了 C、D 和 E(仅限本地),但后来我意识到 D 和 E 确实独立于 C。我想将 C 移动到它自己的分支,并保留 D 和 E 供以后使用。也就是说,我想要这个:

                   /--C
    /--master--X--Y
A--B
    \--D--E

如何将 C 从 D 和 E 下拉出来?

git git-branch git-cherry-pick
1个回答
72
投票

您可以使用

git cherry-pick
抓住
C
,然后将其放在
Y
上。假设
Y
作为名为
branch-Y
的分支的尖端存在,您可以运行以下命令:

git checkout branch-Y
git cherry-pick C

所以现在

C
位于
Y
之上。但是
D
E
仍然包含
C
(择优挑选不会移动提交,它只是复制它)。您必须在
D
之上重新设置
E
B
的基础。假设
E
branch-E
的尖端,
B
branch-B
,则可以运行以下命令:

git checkout branch-E
git rebase --interactive branch-B

这将打开一个交互式变基会话。只需完全删除提交

C
,并保持
D
E
完好无损。然后,您将在
D
之上重新获得
E
B
,而无需
C

© www.soinside.com 2019 - 2024. All rights reserved.