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