首页 > 解决方案 > 撤消已推送的旧提交并仅保留部分更改

问题描述

我想去一个旧的提交。
我想保留的部分旧提交和我想删除的部分。
在删除了我不想要的提交部分之后,我想回到 master 分支的头部。

这可能吗?

标签: git

解决方案


免责声明:我不能从您的描述中完全说出您想要做什么。以下是我能想到的两种最可能的解释。告诉我们更多,我会编辑。


如果您想修改过去历史中的提交,这是一个很大且非常不方便的过程,涉及从修改后的提交中重写所有历史。当您与任何人共享 repo 时,甚至在一个人的时候根本不是一个轻量级的操作,这会带来极大的问题。让我们知道是否是这种情况,但我将假设第二种情况。


如果您想使用(部分)特定提交带来的更改,在对其进行调整以适应您的特定需求(此处不包括部分更改)之后,您可以:

git cherry-pick -n <commitHash>

它还不会在当前分支的顶端创建提交,它会将来自该提交的更改带入工作树,您将有机会添加/删除/修改您想要的任何内容,然后提交。


推荐阅读