git使用现有的本地提交创建分支

时间:2016-06-15 15:21:48

标签: git branch

我已经开始处理功能分支并进行了一些更改和提交。但我没有将这些更改推送到远程跟踪分支。但现在我想创建一个单独的错误修复分支,以便我可以创建拉取请求。 如何创建一个新分支,其中包含我在当前分支上创建的所有提交历史记录而不推送。

我想添加提交图表以便更清晰。 的 A --- ---乙Ç--- --- dË---ģ

所以我在A已经在远程的分支上进行了更改,并使本地提交BCDEG。现在我想要新的分支从 A 提交中查看所有本地提交BCDEG,以便我可以在现有功能分支提交 A 上创建新的拉取请求。

2 个答案:

答案 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。如果我理解你的问题。