创建一个没有旧提交的分支

时间:2020-02-13 02:34:26

标签: git

我在提交O1处创建了一个存储库,以修复其中的错误。我对master分支进行了两次提交,B1和B2。

O1 -> B1 -> B2

后来,我决定添加一个新功能。我向master分支添加了一些提交。

O1 -> B1 -> B2 -> F1 -> F2 -> F3

该新版本同时包含错误修正和功能,目前由我使用。

我想对我添加的功能向原始存储库发出请求。但是,错误修正是完全无关的,因此不应该包括在内。我最初并不希望共享修改,所以像傻瓜一样,我在master分支中完成了所有这些工作。从那以后我就学到了教训。

如何制作仅包含功能的分支/内容:

O1 -> F1 -> F2 -> F3

...以便我可以发出请求请求,同时还保留一个可以同时使用的功能和错误修正的版本?

3 个答案:

答案 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分支,而F3HEAD

git checkout -b feature
git rebase -i HEAD~6

dropB1选择B2