如何从几个提交创建分支?

时间:2016-11-23 02:48:35

标签: git

我对git相当新鲜。

目前我有下面描述的提交,这些提交已被推送到远程。 only 1 branch

当我不得不开始构建一个ui时,我创建了一个分支(branch1)。 但我意识到,当我处理另一个功能(绿色)时,我应该做第二个分支。

如何从当前设置进入以下设置?如果它让事情变得更容易,我就不会与其他合作者合作。

separate branches

更新: 所有的答案都有效,我接受了第一个提交的答案,但使用了答案的组合。要撤消提交,我们可以使用交互式rebase工具(Deleting a commit in Between other commits)。

3 个答案:

答案 0 :(得分:9)

不要挑选。使用git-rebase。

现在就是你现在的位置:

enter image description here

1)在branch1的头部创建一个新分支:

git branch branch2

enter image description here

2)将branch1重置为其头部位置:

您可以使用git log找到上次提交的哈希,或者(在我的示例中)使用HEAD~2返回两次提交。

git reset --hard <back-there>

enter image description here

3)切换到branch2

git checkout branch2

enter image description here

4)将所有 branch1 重新 branch2重新定位到master

git rebase --onto master branch1

enter image description here

答案 1 :(得分:1)

实际上它非常棒!

首先,使用git log找到要创建分支的提交哈希。复制新分支的sha哈希值。

运行以下命令(将sha哈希替换为实际sha):

git checkout 051ab99e1bb7359d7136d621d9feacfc82aa8721
git checkout -b my-new-branch
git push --set-upstream origin my-new-branch #optional, only if you want to push it to remote

之后,您可以使用git cherry-pick添加绿色提交,如下所示:

git cherry-pick SHA

答案 2 :(得分:1)

$ git checkout master              # go to master branch
$ git checkout -b branch2          # create & checkout branch2

$ git reflog                       # copy commit hash of your two green commits
$ git cherry-pick <commit-hash-1>  # pick frist green commit
$ git cherry-pick <commit-hash-2>  # pick second green commit

你的branch2准备好了。现在你应该撤消branch1的最后两次提交      $ git checkout branch1 # go to branch1 $ git reset --hard HEAD~2 # undo last two commits