如何从远程分支永久删除少量提交

我知道这是历史的重写,这是糟糕的yada yada。

但如何永久删除远程分支的一些提交?


你' git reset '你的本地分支,然后你git push --force你修改后的本地分支git push --force到远程。 (这里的其他解决方案,包括删除远程分支,并重新推送它)

这个答案说明了这种命令的危险性,特别是当人们依赖远程历史记录来获得本地回购时。
您需要做好准备,指出人们正在从git rebase手册页的RECOVERING FROM UPSTREAM REBASE部分


重要:请确保您指定了“git push -f”上的哪些分支,否则您可能会无意中修改其他分支![*]

本教程中显示了三个选项。 如果链路断开,我会在这里离开主要步骤。

  • 恢复完整的提交
  • 删除最后一次提交
  • 从列表中删除提交
  • 1恢复完全提交

    git revert dd61ab23
    

    2删除最后一次提交

    git push <<remote>> +dd61ab23^:master
    

    或者,如果该分支在本地可用

    git reset HEAD^ --hard
    git push <<remote>> -f
    

    其中+ dd61 ...是您的提交散列,git将x ^解释为x的父亲,并将+作为强制非fastforwared推送。

    3从列表中删除提交

    git rebase -i dd61ab23^
    

    这将打开并显示所有提交列表的编辑器。 删除你想摆脱的那个。 完成rebase并推动回购。

    git rebase --continue
    git push <remote_repo> <remote_branch> -f
    

    只需注意在恢复非工作提交时使用last_working_commit_id

    git reset --hard <last_working_commit_id>
    

    所以我们不能重置为我们不想要的commit_id

    那么肯定,我们必须推送到远程分支:

    git push --force
    
    链接地址: http://www.djcxy.com/p/48921.html

    上一篇: How to permanently remove few commits from remote branch

    下一篇: How to add modification to a submitted change in Git?