[英]Git remove commit in the middle
我拥有最近的提交Y,最近的提交X,以及提交X之前的许多(50多个)提交。我需要删除提交X(泄漏的密码)并保留Y。 怎么做?
我也将所有提交都推送到了远程存储库。
PS决定重新提交最后两次提交,并在之后复制粘贴sc
git reset --hard HEAD ^^
适用于本地代表,不适用于远程(推送后仍然看到那些提交)
如果您已经解决了提交Y中的问题,并且只想重写历史记录以删除提交X (因为它包含密码),则可以git rebase -i head~2
并选择先挤压X和Y,然后再挤压git push -f
。 通常不建议这样做,但是如果您在提交中输入密码,那么我猜它可能会被忽略。
git reset --soft <<last commit you want to keep>>
那么您可以仅重新add
所需的内容,然后重新git reset --soft <<last commit you want to keep>>
并推送。 这可能需要一个git push -f
,只有在您确定没有其他人拉过/您可以与所有相关方协作的情况下,它才可以。
您还可以git revert
提交,但是它只会将其从工作树中删除,而不是git历史记录。 上述解决方案是我所知将其完全销毁的唯一方法(将其从GH和历史记录中删除)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.