我有一个主分支,并试图将提交从主分支复制到新创建的分支。除特定提交外,所有提交都应在新分支中。
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
在这种情况下你能帮我吗?
谢谢
您可以使用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
asmaster~2
等等。
另一种可能性是在提交时创建一个master
分支
git checkout -b newbranch master
然后使用git rebase -i
which 将创建一个仅包含选定提交的新分支
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