git删除远程提交记录——git revert commitId
场景
开发过程中,如果把本地的某一个commit推送到远端后,希望把远端的该条记录删除。
git revert
需要删除本地commit,并同步到服务器,使用git revert可以删除某一次提交,并为本次删除生成一个新的提交。
也就是说不是把之前的提交记录抹去,在提交记录中还是能看到之前的提交,并且有一个新的revert提交,把之前的提交取消掉。
git revert
使用上面的命令可以删除某一个提交。git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
总结
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,
版本会递增,不影响之前提交的内容
辅助指令
git log
- 该命令显示从最近到最远的提交日志。每一次提交都有对应的 commit id 和 commit message。
如果嫌弃输出的信息杂乱无章,那么加上 –pretty=oneline
git log --pretty=oneline
- 将只会显示提交的commit id号和对应的注释。
git reset –hard commit_id 或则是 git reset –hard HEAD^
- 表示彻底将工作区、暂存区和版本库记录恢复到指定的版本库
附
如果你在本地做了错误提交,那么回退版本的方法很简单
1.先用下面命令找到要回退的版本的commit id:
git reflog
2.接着回退版本:
git reset --hard a7e1d279
a7e1d279就是你要回退的版本的commit id的前8位。
远程分支版本回退的方法
如果你的错误提交已经推送到自己的远程分支了,那么就需要回滚远程分支了。
1.首先要回退本地分支:
git reflog
git reset --hard a7e1d279
2.紧接着强制推送到远程分支:
git push -f origin master
- 这里假设只有一个master分支
origin就是一个名字,它是在你clone一个托管在Github上代码库时,git为你默认创建的指向这个远程代码库的标签,origin指向的是repository,master只是这个repository中默认创建的第一个branch。当你git push的时候因为origin和master都是默认创建的,所以可以这样省略。
注意:本地分支回滚后,版本将落后远程分支,必须使用强制推送覆盖远程分支,否则无法推送到远程分支