自[重复]以来如何“撤消”git提交同时保留所有其他提交
Posted
技术标签:
【中文标题】自[重复]以来如何“撤消”git提交同时保留所有其他提交【英文标题】:How to 'undo' one git commit whilst keeping all others since [duplicate] 【发布时间】:2015-04-12 10:16:26 【问题描述】:我有一个包含许多提交的 git 存储库。假设我们从过去到现在都有这些提交:
-
小改动
大功能添加
小改动
小改动
现在我们已经确定出于商业原因应该删除这个重要功能,但我想保留此后所做的更改。
我怎样才能做到最好?
【问题讨论】:
我通常为此使用“git rebase -i HEAD~4”,删除不需要提交的行,然后就可以了。 丰富 - ***.com/questions/7099833/… 【参考方案1】:执行交互式变基:
$ 'git rebase -i HEAD~4'
然后从列表中删除您不想要的那个。看到这个答案:https://***.com/a/13061212/1024740
【讨论】:
【参考方案2】:git-rebase
对此太过分了,你会失去历史。
改用这个:
$ git revert <hash of commit 2>
然后,您的历史记录将显示您提交了一项功能,然后将其删除。
【讨论】:
我试过了,但它实际上是一个合并提交——哈希不起作用,它要求一个数值,但我不确定是什么值…… @RichBradshaw 在尝试恢复合并提交时,您需要根据需要评估补丁的父级告诉git revert
。如果您想恢复合并的更改,您必须使用git revert -m 1 <hash of commit 2>
。
一般来说,我建议看看documentation of git revert
。以上是关于自[重复]以来如何“撤消”git提交同时保留所有其他提交的主要内容,如果未能解决你的问题,请参考以下文章