2013-02-08 93 views
9

git樱桃采摘有效吗?例如,前一段时间,由于业务流程尚未准备就绪,我不得不做出一些临时更改以禁用一组功能。现在,业务流程已经准备就绪,我想简单地删除提交及其影响。虽然我当然可以看看这些提交的差异并找出需要完成的工作,但知道如果这些提交回来的历史可能没有完成而没有重置并丢失所有后来发生的事情他们。git cherry-pick对面?

+1

你可能是指'git revert'? – 2013-02-08 19:09:53

回答

12

撤消另一个提交所做更改的自动方法是git revert

+0

这个,我应该看过。 – andyortlieb 2013-02-08 20:49:25

+1

这不是相反的使用'git rebase -i'而不是@Kyralessa答案解释 – Leo 2016-01-28 07:39:34

15

git revert不是git cherry-pick的反义词。 git rebase -i是。

git revert添加了一个新的提交,用于删除一个或多个旧提交所做的更改。它不会删除原始提交。

git rebase -i会向您显示您当前提交的提交列表,回到上一次提交而不是您的上游分支。然后,您可以编辑,重新排列,更改提交消息,甚至从此列表中删除提交。

请记住,如果您已经推动了您想要移除的提交,那么您需要确定将它们与您的队友一起移除,因为一旦您使用移除的方法推送新的历史记录时,他们必须进行调整提交。

+1

这非常棒!虽然rebase -i在技术上回答了这个问题,并且从长远来看可能更清洁,但git revert满足了我表达的问题。 – andyortlieb 2013-02-12 15:11:26

+1

“git revert”添加了一个新的提交,用于删除一个或多个旧提交所做的更改。“这听起来*完全像'git cherry-pick'的反面。也许“反”比“反面”更好。 – 2016-02-12 17:27:33

+1

如果'git cherry-pick'添加了一个提交,那么相反就是删除该提交。不要添加_another_ commit。 – 2016-02-12 17:39:40