分享

git 删除|撤回错误提交

 bylele 2019-10-25

问题说明

修改后提交了,发现弄错了,除了手工修改回来再提交外(少量改动可采用),

还可用git 方便的撤回

场景差异说明:

有没有push到远程

push 后是否有其他人拉取(如果有其他人拉取的不能用reset)

撤销 最后一次,某一次,多次提交

命名说明

reset--重置指针

revert -生成提交的反提交并作为一个新提交(改的再改回去,只是git帮自动生成)

rebase -将当前分支推到rebase 指定位置与当前位置的最近交叉点,并将交叉点到当前分支位置的所有提交,生成一个个补丁包重新提交(-i 选项可以选择如果应用各个提交-合并,删除,采用等)


1:删除最后一次

如果没有push

git reset --hard HEAD^

如果有push到远程,没有其他人拉取

git reset --hard HEAD^

git push  origin dev -f

如果有其他人拉取不能用reset

git revert HEAD

git push  origin dev

2:删除某一次-

删除的提交id:commitIdB(cmmitidA是B的父提交)

如果那一次到目前都没有人拉取

用rebase -i cmmitidA(B父提交) ,

对commitidB 进行 drop -删除这次提交(如果文件有其他提交有共同修改会有冲突,需解决冲突)

如果有人拉取

采用revert 

git revert commitIdB

3:删除多次提交

没人拉取(或没有push)可以采用reabse -找到删除提交最早的位置

如果删除的提交与要保留的提交有冲突(修改共同的文件),需要解决冲突

有人拉取用revert

revert 可以逐个,也可一次撤销多个连续的

A -> B -> C -> D 

如果想把B,C,D都给revert,除了一个一个revert之外,还可以使用range revert

git revert OLDER_COMMIT^..NEWER_COMMIT(git revert B^..D )

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多