0

我有一个主分支,并试图将提交从主分支复制到新创建的分支。除特定提交外,所有提交都应在新分支中。

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

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

谢谢

4

1 回答 1

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~, c8asmaster~2等等。

另一种可能性是在提交时创建一个master分支

git checkout -b newbranch master

然后使用git rebase -iwhich 将创建一个仅包含选定提交的新分支

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

于 2013-10-14T21:17:54.623 回答