我确信这是一个简单的问题,已被询问和回答,但我不知道要搜索哪些术语。我有这个:
/--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 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
。