繁体   English   中英

git删除中间的提交

[英]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并选择先挤压XY,然后再挤压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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM