修改后提交了,发现弄错了,除了手工修改回来再提交外(少量改动可采用),
还可用git 方便的撤回
有没有push到远程
push 后是否有其他人拉取(如果有其他人拉取的不能用reset)
撤销 最后一次,某一次,多次提交
reset--重置指针
revert -生成提交的反提交并作为一个新提交(改的再改回去,只是git帮自动生成)
rebase -将当前分支推到rebase 指定位置与当前位置的最近交叉点,并将交叉点到当前分支位置的所有提交,生成一个个补丁包重新提交(-i 选项可以选择如果应用各个提交-合并,删除,采用等)
如果没有push
git reset --hard HEAD^
如果有push到远程,没有其他人拉取
git reset --hard HEAD^
git push origin dev -f
如果有其他人拉取不能用reset
git revert HEAD
git push origin dev
删除的提交id:commitIdB(cmmitidA是B的父提交)
如果那一次到目前都没有人拉取
用rebase -i cmmitidA(B父提交) ,
对commitidB 进行 drop -删除这次提交(如果文件有其他提交有共同修改会有冲突,需解决冲突)
如果有人拉取
采用revert
git revert commitIdB
没人拉取(或没有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 )
联系客服