是否有一种有效的 git cherry-pick 的相反操作?例如,一段时间前,我不得不进行一些临时更改来禁用一组功能,因为业务流程尚未准备好。现在,该业务流程已经准备好了,我想简单地删除这些提交及其影响。虽然我当然可以查看这些提交的差异并弄清需要完成的所有工作,但如果能在历史记录中撤消这些提交而不重置并失去之后的所有内容,那将会很有趣。
是否有一种有效的 git cherry-pick 的相反操作?例如,一段时间前,我不得不进行一些临时更改来禁用一组功能,因为业务流程尚未准备好。现在,该业务流程已经准备好了,我想简单地删除这些提交及其影响。虽然我当然可以查看这些提交的差异并弄清需要完成的所有工作,但如果能在历史记录中撤消这些提交而不重置并失去之后的所有内容,那将会很有趣。
git revert
不是git cherry-pick
的反义词,git rebase -i
才是。
git revert
会添加一个新的提交来撤销一个或多个旧的提交所做的更改,但不会删除原始提交。
git rebase -i
会显示一个包含从当前提交开始到上游分支最后一个提交的提交列表。然后,您可以编辑、重新排列、更改提交消息,甚至从此列表中删除提交。
请注意,如果您已经推送了要删除的提交,则需要与团队成员确认是否可以删除这些提交,因为在您推送具有已删除提交的新历史记录后,他们将需要进行调整。
撤销他人提交的更改的自动化方法是使用git revert
。
git reflog
或另一个分支中 - 在这种情况下,git revert
仍将起作用。 - Ruslan
git revert
是一个添加新提交的命令,它会撤销一个或多个旧提交所做的更改。这与git cherry-pick
正好相反(可以说是“相反”的意思)。 - Code-Apprenticegit cherry-pick
添加了一个提交,那么相反的操作就是删除该提交,而不是添加另一个提交。 - Ryan Lundya^b=c
的反函数是什么?是log(c,a)
还是root(c,b)
?(可能取决于您认为哪个“属性”最重要) - industryworker3595112git rebase -i
在可被变基的分支上非常好用,而git revert
则在不能变基的分支上很方便。由于问题中并未明确实际情况,因此应当同时提及这两个命令。 - Melebius