Git 如何从分支的中间删除提交
我已经做出了一些承诺,并将其推送到了我的远程回购。其中一个我想删除。它只包含一个二进制文件,该文件仅在该分支的提交中更改。如何在不影响以后提交的情况下删除它?您可以使用Git 如何从分支的中间删除提交,git,git-commit,Git,Git Commit,我已经做出了一些承诺,并将其推送到了我的远程回购。其中一个我想删除。它只包含一个二进制文件,该文件仅在该分支的提交中更改。如何在不影响以后提交的情况下删除它?您可以使用交互式(-i)rebase删除以前的提交 $ git log # copy the target commit $ git rebase -i <target-commit>~1 # start rebase from the previous commit of
交互式(-i)rebase
删除以前的提交
$ git log # copy the target commit
$ git rebase -i <target-commit>~1 # start rebase from the previous commit of target commit
现在,由于git历史记录已更改,您需要执行强制(-f)推送到远程
$ git push -f origin HEAD
git-rebase-i TARGET_-COMMIT~1
,然后不要选择TARGET_-COMMIT
,我认为这会起作用。在@CollinD解决方案中,您必须强制推送到远程存储库(首选——强制使用租约
),因为您的更改无法快速推进。如果你想避免这些问题,你可以git revert
这个提交。在最后一步,即push-f???@AKSHAYSHINGOTE之后会发生什么?你的遥控器(origin
这里)将被更新(从git历史记录中删除提交)。搞定了,谢谢。注意:如果你想更明确,你也可以使用drop
或d
而不是用#
注释掉这行。是的,这是正确的@joshu Pinter。更新答案。谢谢是否有不涉及强制推送并记录此提交“删除”的替代方案?
$ git push -f origin HEAD