我已经开始处理功能分支并进行了一些更改和提交。但我没有将这些更改推送到远程跟踪分支。但现在我想创建一个单独的错误修复分支,以便我可以创建拉取请求。 如何创建一个新分支,其中包含我在当前分支上创建的所有提交历史记录而不推送。
我想添加提交图表以便更清晰。 的 A --- ---乙Ç--- --- dË---ģ
所以我在A已经在远程的分支上进行了更改,并使本地提交BCDEG。现在我想要新的分支从 A 提交中查看所有本地提交BCDEG,以便我可以在现有功能分支提交 A 上创建新的拉取请求。
答案 0 :(得分:2)
鉴于你想改变
A` <-- A <-- B <-- C <-- D <-- E <-- G
^origin/feature ^HEAD, feature
到
-- B <-- C <-- D <-- E <-- G
/ ^HEAD, bug-fix
A' <-- A
^ ^feature
|
origin/feature
首先,您需要创建分支
git branch bug-fix
这为您提供了图表
A' <-- A <-- B <-- C <-- D <-- E <-- G
^origin/feature ^ feature, bug-fix, HEAD
请注意,您仍然在feature
分支机构,您只需要设置bug-fix
分支机构,但不要结帐。
接下来,您需要使用feature
删除reset
(B,C,D,E,G)上的提交(A
这里是提交的SHA1哈希值,您也可以使用相对HEAD
位置):
git reset --hard A
注意您将丢失任何未提交的功能 - 请在执行该命令之前了解reset
命令的危险。所有的重置都是&#34; push&#34; feature
指向提交A的指针。
然后检查新分支并推送功能分支更改以获取拉取请求:
git checkout bug-fix
git push
这为您提供了所需的图表:
-- B <-- C <-- D <-- E <-- G
/ ^ HEAD, bug-fix
A' <-- A
^origin/feature, feature
答案 1 :(得分:0)
假设您已经在功能分支上并希望创建新分支,从功能分支开始,只需执行以下操作:
git checkout -b <new_branch>
之后,您可以将其推送到原点并创建拉取请求,如:
git push origin <new_branch>
P.S。如果我理解你的问题。