Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git cherry pick的对面?_Git - Fatal编程技术网

git cherry pick的对面?

git cherry pick的对面?,git,Git,有一个有效的对立面git cherry pick吗?例如,不久前,由于业务流程尚未准备就绪,我不得不进行一些临时更改以禁用一组功能。既然业务流程已经准备好了,我只想简单地删除提交及其效果。当然,我可以看看这些承诺的不同之处,找出需要做什么,了解历史上那些提交是否可以在不重置和丢失它们之后的所有内容的情况下取消,这将是一件有趣的事情。自动撤销另一个提交所做更改的方法是git revertgit revert不是git cherry pick的反面git-rebase-iis git revert添

有一个有效的对立面git cherry pick吗?例如,不久前,由于业务流程尚未准备就绪,我不得不进行一些临时更改以禁用一组功能。既然业务流程已经准备好了,我只想简单地删除提交及其效果。当然,我可以看看这些承诺的不同之处,找出需要做什么,了解历史上那些提交是否可以在不重置和丢失它们之后的所有内容的情况下取消,这将是一件有趣的事情。

自动撤销另一个提交所做更改的方法是
git revert
git revert
不是
git cherry pick
的反面
git-rebase-i
is


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

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


请记住,如果您已经推送了要删除的提交,您需要与您的队友一起确定删除这些提交,因为一旦您推送了带有已删除提交的新历史记录,他们将不得不进行调整。

您的意思可能是
git revert
?很高兴知道这一点!虽然rebase-i从技术上回答了这个问题,而且从长远来看可能更干净,但git revert满足了我所表达的问题。“
git revert
添加了一个新的提交,删除一个或多个旧提交所做的更改。”这听起来与
git cherry pick
完全相反。也许“反向”比“相反”更好。如果
git cherry pick
添加了一个提交,那么相反的做法就是删除该提交。不添加另一个提交。@Kyralessa什么是
a^b=c
的逆项?它是日志(c,a)还是根目录(c,b)?(可能取决于哪个“属性”对您最重要)返回Git…两个建议的命令都可以删除现有提交的影响。从Git用户的角度来看,
Git-rebase-i
对于可以重设基础的分支非常有用,而
Git-revert
对于不能重设基础的分支非常有用。由于问题中未说明实际情况,因此应提及这两种情况。这不是相反的用法,而是使用git rebase-i,正如@Kyralessa回答所解释的,提交还原根本不必出现在当前分支中。例如,它可能已被压缩到其他提交中,并保留在
git reflog
或另一个分支中-在这种情况下,
git revert
仍然有效。