除了特定提交之外,如何将提交从master复制到新分支?

时间:2013-10-14 20:56:20

标签: git github bitbucket

我有一个主分支,我正在尝试将提交从主服务器复制到新创建的分支。除特定提交外,所有提交都应该在新分支中。

master:    c1-c2-c3-c4-c5-c6-c7-c8-c9
newbranch: c1-c2-c4-c5-c7-c8-c9

如上所述,我想将所有提交复制到newbranch,除了c3和c6。

另外,我必须保持master分支不变,原样。

我正在使用git版本1.8.4

在这种情况下,你能帮帮我吗?

由于

1 个答案:

答案 0 :(得分:4)

您可以使用cherry-pick 复制从分支机构提交到另一个

假设c1c2等等,每个提交的sha1都可以执行以下操作

C1-C2-C4-C5-C7-C8-C9

git checkout -b newbranch
git cherry-pick c1
git cherry-pick c2
git cherry-pick c4
git cherry-pick c5
git cherry-pick c7
git cherry-pick c8
git cherry-pick c9

对于这种特殊情况,您可能更喜欢使用像SmartGit这样的GUI界面,这样您就可以用鼠标选择每个提交,而不需要处理SHA1。

另一种可能性是根据与master的距离来引用提交。

例如,您的提交c9可以引用为master~c8可以引用为master~2,依此类推。

另一种可能性是在master

的提交中创建分支
git checkout -b newbranch master

然后使用git rebase -i创建一个只包含所选提交的新分支

git rebase -i HEAD~8

编辑将打开。只需选择您要保留的提交并弃置您要丢弃的提交,删除其行

pick 9748201 c2
pick 3b1c9d3 c4
pick 408de72 c5
pick eef6862 c7
pick bffc3a9 c8
pick 669920f c9

然后保存,瞧,您的newbranch将是master的副本c3c6