git - 在不删除旧分支的情况下重新设置基准
问题描述
我在Git中有以下情况:
A--B--C--D--E--F--G
\--H--I
我想重新设置分支,但保留原始分支。所以我想要这个:
A--B--C--D--E--F--G
\--H--I \--H'--I'
原因是我的 rebased 分支可能会破坏事情。如果它做得太多,而且我不能轻易修复它,我想继续使用旧分支。
这是在主分支实际上基于另一个存储库并且比原始存储库落后很远的情况下。我正在尝试将我们的(HI)分支恢复到原始主分支的最新版本。
解决方案
只需创建一个新分支并对其进行处理。
git checkout your-old-branch
git checkout -b to-be-rebased
git rebase master
并继续工作,to-be-rebased
直到你有一些可行的东西。
所以your-old-branch
仍然指向相同的确切提交,不受影响。
...并且两个第一个结帐步骤可以合并为一个(正如Johnathon所指出的)以避免不必要的结帐步骤:
git checkout -b to-be-rebased your-old-branch
最后,为了公平对待Lasse 的评论,我们确实可以继续进行cherry-pick
相同的效果:
git checkout -b new-branch master
git cherry-pick master..your-old-branch
推荐阅读
- javascript - 如何解决承诺设置状态的反应
- vue.js - Nuxt - 返回根目录时如何保留存储状态(主页)
- java - Windows、Gradle 和 Cucumber 组合在生成报告时抛出 IOException
- excel-formula - 根据 Excel 中的累积和返回列号
- powershell - 检查 ADusers 的属性 export-csv 并包含 null
- c# - 未找到 CredDB.CEF
- javascript - Angular 6 - *ngFor:在 JSON 数据中附加选择选项
- mysql - Sql - 查询以获取表中的记录总数
- python - Python while 循环永远不会结束(在 numworks 计算器上)
- node.js - 添加用户交互教程以响应 webapp