[英]How to move some last Git commits currently on a branch, onto another branch?
我有一个存储库,在那里我一直在master
分支上工作,最近又添加了约10项提交,现在希望将它们提交到另一个分支上,因为它们描述了我现在认为是实验性的工作(我仍在学习Git的良好实践)。
考虑到这一点,我现在想将这最后10个提交从自己的分支中拿出来,这样我就可以将master
提交清理并保留给“发布” /“稳定”提交。
为了说明,我有:
b--b (feature B)
/
X--X--X--Z--Z--Z--Z--Z--Z (master)
\
a--a--a (feature A)
您可以看到标有X
和Z
提交都在master
分支上,而我想要的是标有Z
提交(现在被认为是实验性的“功能Z”工作)位于它们自己的分支上,而master
以最右边的X
结尾。 为了说明,所需的图形:
b--b (feature B)
/
X--X--X (master)
\ \
\ Z--Z--Z--Z--Z--Z (feature Z - the new branch I want)
\
a--a--a (feature A)
这样,我就可以将我的master
保留用于发布和稳定的提交,并能够根据需要合并到A,B和Z功能中。
那么,如何将“ Z”提交移动到自己的分支上?
git checkout master
git branch feature-Z
git reset <commit_id>
其中commit_id是b分支之前最后X次提交的标识符。
为了完整起见,答案在这里-http://git-scm.com/docs/git-reset-搜索文本“撤消提交,使其成为主题分支”-该示例显示了使最后3次提交成为分支并将master重置为这3个提交之前的提交:
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 3 commits.
#
nothing to commit (working directory clean)
$ git branch topic/wip
$ git reset --hard HEAD~3
$ git checkout topic/wip
Switched to branch topic/wip
只需重命名master并在最后一个X处启动一个新master:
git checkout master; git branch -m feature; git checkout -b master HEAD~6
在所需的新分支中创建和签出
强制主分支N提交回来(在您的情况下为10)
git checkout -b feature-z
git branch -f master HEAD~10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.