问题说明修改后提交了,发现弄错了,除了手工修改回来再提交外(少量改动可采用), 还可用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 ) |
|