我对git相当新鲜。
当我不得不开始构建一个ui时,我创建了一个分支(branch1)。 但我意识到,当我处理另一个功能(绿色)时,我应该做第二个分支。
如何从当前设置进入以下设置?如果它让事情变得更容易,我就不会与其他合作者合作。
更新: 所有的答案都有效,我接受了第一个提交的答案,但使用了答案的组合。要撤消提交,我们可以使用交互式rebase工具(Deleting a commit in Between other commits)。
答案 0 :(得分:9)
不要挑选。使用git-rebase。
现在就是你现在的位置:
1)在branch1
的头部创建一个新分支:
git branch branch2
2)将branch1
重置为其头部位置:
您可以使用git log
找到上次提交的哈希,或者(在我的示例中)使用HEAD~2
返回两次提交。
git reset --hard <back-there>
3)切换到branch2
git checkout branch2
4)将所有从 branch1
重新 branch2
重新定位到master
git rebase --onto master branch1
答案 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