撤消或删除以前的Git提交中的更改

这个问题在这里已经有了答案:

  • 完全从历史记录中删除(旧)git提交1个答案

  • 您随时可以恢复更改。

    git revert C
    

    如果你想重写历史,这就是rebase的作用。 你需要:

    git rebase -i A
    

    然后从提交列表中删除C.

    更长的解释:

    第一个选项通过创建与原始提交相反的新提交来恢复更改。 所以这个仓库看起来像这样:

    A> B> C> D> E> C`

    C'与C相反。基本上和patch --reverse

    第二个选项更改历史记录。 rebase允许你选择特定的提交,改变提交顺序等等。 我建议阅读git-rebase。 -i标志用于交互模式,它允许用户在重新装订之前编辑提交列表。

    如果您从提交列表中删除C并执行rebase,则实际输出将为

    A> B> D> E

    您在分支中不再有C的历史记录。

    注意:在这两种情况下,您在此过程中可能会有冲突。 在第一种情况下,因为你正在应用C`而不是E,在第二种情况下,因为你在D上应用D。


    尝试git revert C

    ...并且最好也读man git-revert


    你不能这样做, 得到A > B > D > E 你将永远以A > B > D' > E'

    要删除C中引入的更改,您可以使用

    git rebase --onto <newbase> <oldbase> <commit/branch>
    

    在你的情况下:

    git rebase --onto B C E
    

    这将把D..E从旧的基础C引入到新基础B变更(如果你没有碰到任何冲突),导致

    A > B > D' > E'
    

    需要注意的是, DE会得到新的sha ID,从而导致D'E'因此如果您已经发布了CDE使用还原方法( git revert C ),否则您可能会混淆其他人的历史。

    链接地址: http://www.djcxy.com/p/49791.html

    上一篇: Undo or remove changes from a previous Git commit

    下一篇: Downgrading solution from Visual Studio 2017 RC to Visual Studio 2015