我有一个主分支,我正在尝试将提交从主服务器复制到新创建的分支。除特定提交外,所有提交都应该在新分支中。
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
在这种情况下,你能帮帮我吗?
由于
答案 0 :(得分:4)
您可以使用cherry-pick
复制从分支机构提交到另一个
假设c1
,c2
等等,每个提交的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
的副本c3
和c6