【问题标题】:How to 'undo' one git commit whilst keeping all others since [duplicate]自[重复]以来如何“撤消”git提交同时保留所有其他提交
【发布时间】:2015-04-12 10:16:26
【问题描述】:

我有一个包含许多提交的 git 存储库。假设我们从过去到现在都有这些提交:

  1. 小改动
  2. 大功能添加
  3. 小改动
  4. 小改动

现在我们已经确定出于商业原因应该删除这个重要功能,但我想保留此后所做的更改。

我怎样才能做到最好?

【问题讨论】:

标签: git


【解决方案1】:

执行交互式变基:

$ 'git rebase -i HEAD~4'

然后从列表中删除您不想要的那个。看到这个答案:https://stackoverflow.com/a/13061212/1024740

【讨论】:

    【解决方案2】:

    git-rebase 对此太过分了,你会失去历史。

    改用这个:

    $ git revert <hash of commit 2>
    

    然后,您的历史记录将显示您提交了一项功能,然后将其删除。

    【讨论】:

    • 我试过了,但它实际上是一个合并提交——哈希不起作用,它要求一个数值,但我不确定是什么值……
    • @RichBradshaw 在尝试恢复合并提交时,您需要根据需要评估补丁的父级告诉git revert。如果您想恢复合并的更改,您必须使用git revert -m 1 &lt;hash of commit 2&gt;
    • 一般来说,我建议看看documentation of git revert
    猜你喜欢
    • 2013-06-10
    • 2014-06-05
    • 2020-09-05
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2012-12-14
    • 2021-08-14
    • 2013-05-27
    相关资源
    最近更新 更多