我在提交O1处创建了一个存储库,以修复其中的错误。我对master分支进行了两次提交,B1和B2。
O1 -> B1 -> B2
后来,我决定添加一个新功能。我向master分支添加了一些提交。
O1 -> B1 -> B2 -> F1 -> F2 -> F3
该新版本同时包含错误修正和功能,目前由我使用。
我想对我添加的功能向原始存储库发出请求。但是,错误修正是完全无关的,因此不应该包括在内。我最初并不希望共享修改,所以像傻瓜一样,我在master分支中完成了所有这些工作。从那以后我就学到了教训。
如何制作仅包含功能的分支/内容:
O1 -> F1 -> F2 -> F3
...以便我可以发出请求请求,同时还保留一个可以同时使用的功能和错误修正的版本?
答案 0 :(得分:2)
git rebase B2 F3 --onto O1
这基本上是说:“将提交从F3
切断到分支与B2
分开的位置,然后将其粘贴到O1
的顶部。”
请注意,执行此操作时当前分支是什么都无所谓(尽管您无法进行任何重大更改),但是如果您已经在F3
上,则可以省略该参数,默认为当前分支:
git rebase B2 --onto O1
答案 1 :(得分:2)
我可以这样做
git rebase --onto O1 B2 F3
您正在要求在O1的基础上重新设置F3,丢弃直到B2的修订版本。
答案 2 :(得分:0)
我会做(签出master
分支,而F3
为HEAD
)
git checkout -b feature
git rebase -i HEAD~6
为drop
和B1
选择B2