繁体   English   中英

如何将当前在分支上的一些最后的Git提交移动到另一个分支上?

[英]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)

您可以看到标有XZ提交都在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM