我有一些我不希望在我的项目中提交的提交,但有一个基于它的提交,我确实想要它。 这是我的GitHub存储库“网络”图(ASCII,因为我仍然无法发布图像):
[]--[]--[_]
| |
| ------->|
---------->[·]--[·]--[*]
( - >表示合并)
我想删除两个[·]提交中所做的更改,并将[*]一个基于上面的[_]一个。 我尝试了合并和变基,但它们应用了不需要的提交的更改。 有可能吗?
对不起,如果我不清楚,英语不是我的母语。 提前谢谢。
答案 0 :(得分:12)
我可以给你两个选择:
交互式rebase (git rebase -i
)会显示提交列表,编辑此列表会更改操作结果;允许您为其他操作重新排序,删除或标记这些提交。在您的情况下,您可以将[*]
的分支重新绑定到[_]
并删除不需要的提交行。
Cherrypick 可让您将单一提交的更改应用到另一个分支中。在您的情况下,您可以简单地将[*]
提交到[_]
的分支中。
答案 1 :(得分:2)
您可以查看_
和cherry pick *
。如果您希望在单独的分支上进行,则可以在执行此操作之前从_
分支。
答案 2 :(得分:1)
你可以通过rebase和压缩你不需要的提交来组合你的提交。可能是你没有做壁球和挑选。
参考: http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html