git - Git 从某些提交中变基
问题描述
初学者真的很难理解Git rebase
。我总是得到奇怪的结果rebase
。我发现我可以用它--onto
来控制我应该变基到哪里,但是我怎样才能控制from
边呢?
例如:
假设我现在在分支 2,数字代表提交完成的时间,红色是我的分支 2 提交,尚未在 master 中。如果我想让我的分支 2 变为下面,我应该使用什么命令?
1) 1 -> 2 -> 8 -> 3 -> 5 -> 6 -> 7
2) 1 -> 2 -> 8 -> 5 -> 6 -> 7
一开始,我以为这样不行,因为我的commit 3会消失,但是我从Git网站上读到了,这实际上是有效的。
3) 1 -> 2 -> 3 -> 5 -> 6 -> 8 -> 7
我可以这样做吗?基本上只在master之上重新提交7?
问这些的原因是因为 autorebase
总是让我头疼,所以我宁愿能够指定,我想 rebase from
which commit onto
which commit。我可以这样做吗?但是我找不到from
参数。
解决方案
第一种情况:
git checkout branch2
git rebase máster
第二种情况:
git rebase --onto master branch2~3 branch2 #rebase branch2 but skipping revision 3
第三种情况:
git checkout branch2~
git cherry-pick master #pick revision 8
git cherry-pick branch2 # pick revision 7
# if you like the result
git branch -f branch2
git checkout branch2
推荐阅读
- wordpress - 将 WordPress 媒体从月/年文件夹更改为一个上传文件夹,全局更新站点?
- sql - 过去 7 天 Unix/Redshift 过滤器不工作
- javascript - 使用 jQuery 突出显示不超过 2 个复选框(li)
- angular - 错误类型错误:无法读取未定义的属性“过滤器”
- java - socket.io 如何通过 android 上的同步调用获得响应?
- sql-server - 在 Microsoft.AnalysisServices.Deployment.exe 中找不到数据库
- google-app-engine - 基于应用引擎 cookie 的流量拆分
- python - Python 全局变量错误
- angular - 对象参数未绑定 spring boot + angular2
- r - 停止在 RStudio 中启动时加载包