git:如何移动最后N次提交到master,进入自己的分支?

amn*_*amn 13 git branching-and-merging

我有一个存储库,我一直在master分支上工作,最后添加了大约10个左右的提交,我现在希望在另一个分支上,因为它们描述的工作我现在看到的是实验性的(我还在学习好的git实践).基本上我想让最后10个提交从一个点开始master形成自己的分支,这样我就可以只X进行"释放"/"稳定"提交.

我现在拥有的,最重要的Z是最后提交实际上有利于发布:

        b--b (feature B)
       /       
X--X--X--Z--Z--Z--Z--Z--Z (master)
    \
     a--a--a (feature A)
Run Code Online (Sandbox Code Playgroud)

你可以看到,无论是masterZ上主,而我要的是犯下打上了master(我的"功能Z"的工作)就趴在自己的特性分支,所以尖XX`.为了说明所需的图表:

        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)
Run Code Online (Sandbox Code Playgroud)

这样我就可以master保留高质量的东西,根据需要合并A,B和Z功能.

那么如何在自己的分支上移动"Z"提交?

JB.*_*JB. 13

git checkout master
git branch feature-Z
git reset <commit_id>
Run Code Online (Sandbox Code Playgroud)

其中commit_id是b分支之前的最后一次X提交的标识符.

  • 你可能想要`git reset --hard`.如果有任何未经检查的修改,请在它之前输入一个`git stash`,然后输入一个`git stash pop`. (7认同)

Bri*_*ian 6

为了完整起见,答案就在这里 - 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
Run Code Online (Sandbox Code Playgroud)