代码之家  ›  专栏  ›  技术社区  ›  Husain Amjherawala

撤消特定文件的推送提交,但不影响之后的提交

  •  0
  • Husain Amjherawala  · 技术社区  · 3 年前

    我已经做出了一项承诺,需要撤销。

    A-B-C-D

    我需要在不影响提交后的提交(C和D)的情况下撤消提交B。

    文件X和文件Y中只有一个文件需要更改。

    注意:所有这些更改都被推送到远程存储库。

    1 回复  |  直到 3 年前
        1
  •  0
  •   knittl    3 年前

    您需要执行两个步骤:

    1. 恢复提交
    2. 从恢复提交中撤消对其他文件的更改

    使用Git,您可以按如下方式进行操作:

    # on D, i.e. HEAD == D
    git revert B # revert the commit
    git checkout D -- FileY # restore FileY from commit D
    git commit --amend -CHEAD # amend your revert-commit
    

    显然,旧的承诺B将留在历史上。

    使用 git log -p gitk (或您选择的任何其他工具)来验证这些步骤之后的历史记录是否符合您的预期。