git - 在另一个分支上重新设置两个分支(不是主分支)
问题描述
我有以下提交历史:
---> master
\
---------> setting-envs
\
-----> feature1
\
-----> feature2
现在,我需要从setting-envs
infeature1
和feature2
. 但是,feature1
基于setting-envs
分支的变基将更改 上的提交历史记录feature1
,因此,我将无法正确变基feature2
,feature1
因为它们将具有不同的提交历史记录(setting-envs
分支除外)。有没有办法在不弄乱提交历史的情况下在分支上重新设置feature1
和feature2
分支?setting-envs
像这样的东西:
---> master
\
---------> setting-envs
\
-----> feature1
\
-----> feature2
解决方案
我不太熟悉你可以放在 rebase 上的所有标志,但我认为你可以使用这个(实用方法):
我假设feature2
在创建之后有 3 个提交,feature1
我们将它们称为 A、B、C
git checkout feature1
git rebase setting-envs // after this step feature1's commits have changed
// now lets handle feature2:
git branch -m feature2 feature2_backup // rename the branch
git checkout -b feature2 // checkout out 'new' branch point out of feature1
git cherry-pick A
git cherry-pick B
git cherry-pick C
git branch -D feature2_backup
当然,您可以使用一个樱桃选择而不是三个,但一般来说,由于在重新设置基础后将实际的新更改引入到 feature1 中,每次提交后您可能会遇到冲突,所以我个人更喜欢一个一个地处理它们(一个口味问题)。
推荐阅读
- python - 如何查看 POST 到托管在 Google App Engine 上的 Flask 应用端点的有效负载?
- azure - C# Azure Function - CosmosDB 触发和解析文档数据
- sql - 查询按日期时间排序后如何更新 SQL Server 表
- python - 尝试通过 Tkinter 部署 ML 模型。代码运行并显示 GUI,但尽管系统运行没有错误,但未显示结果
- jenkins - 如何在自由式工作中获得奴隶名称
- python - 传递额外的参数
- java - 如何将此问题修改为多线程 N-Queens 问题?
- image-processing - 如何优化图像配准的 ORB 参数
- jquery - getJSON jquery 不适用于 URL,但适用于 file.json
- excel - 检查滤芯是否展开或折叠