git - 撤消已推送的旧提交并仅保留部分更改
问题描述
我想去一个旧的提交。
我想保留的部分旧提交和我想删除的部分。
在删除了我不想要的提交部分之后,我想回到 master 分支的头部。
这可能吗?
解决方案
免责声明:我不能从您的描述中完全说出您想要做什么。以下是我能想到的两种最可能的解释。告诉我们更多,我会编辑。
如果您想修改过去历史中的提交,这是一个很大且非常不方便的过程,涉及从修改后的提交中重写所有历史。当您与任何人共享 repo 时,甚至在一个人的时候根本不是一个轻量级的操作,这会带来极大的问题。让我们知道是否是这种情况,但我将假设第二种情况。
如果您想使用(部分)特定提交带来的更改,在对其进行调整以适应您的特定需求(此处不包括部分更改)之后,您可以:
git cherry-pick -n <commitHash>
它还不会在当前分支的顶端创建提交,它会将来自该提交的更改带入工作树,您将有机会添加/删除/修改您想要的任何内容,然后提交。
推荐阅读
- swift - 快速添加随机字母数字字符串的每个第 n 个字符
- javascript - 如何使用 jQuery 之类的嘶嘶声来选择和执行所选元素的操作?
- node.js - TypeError:pchstr 必须是非空字符串
- django - django rest框架递归模型端点结构
- python-3.x - 这是否可以在服务器上调试和编辑实时 python 代码。如果是,那么我们该怎么做?
- django - Django Postgres JSONB 并使用 JSONB 索引
- google-sheets - 在一页数据洞察中过滤单个表
- windows - procdump 转储是否显示由于需求分页而从未加载的页面?
- html - 从 Boostrap 3 迁移的 Bootstrap 4 网格布局问题
- asp.net-core-3.1 - 使用依赖注入从 serilog .Net Core Web API 读取 InMemory 日志