已提交,没有push的情况,回滚
本地commit 了一次,我想把它回滚,怎么做?
git status 查看本地有一个commit
git log 获取commit 版本号(q退出) 也可以使用这种方式获取需要回滚的版本号 回滚:
git reset --soft 撤销commit,但不会撤销add
git reset --mixed 撤销commit,也撤销add
git reset --soft 5a8978722ca3bc8d2225ccae7a1cce976b4cfccc
git status 上也显示,无commit 了
已提交,并且push的情况,回滚
方式一: git reset
git reset --hard 撤销并舍弃指定的版本号之后的提交记录。使用需要谨慎。
注意:是版本号之后的所有提交记录,谨慎用!
例:test02已经push,我想回退到test01
PS D:\project\parent> git reset --hard fedadc2efcf639da22631c60ae706b8fad389ea1
HEAD is now at fedadc2 test01
然后需要push到远程分支,但是直接git push, 是会报错的,因为本地版本落后于远程,需要强制push 强制push(git push -f),然后查看本地和远程分支,test03都没了,版本回退到test02 这种强制提交,如果使用的是gitlab, 权限不是maintainer, 提交也会失败,需要找管理员提交。 注意:这种方式会把提交的代码直接舍弃,非常不建议使用!
idea上的快捷操作方式 然后再强制push
方式二: git revert
git revert 撤销。但是保留了提交记录。并且他是移除指定的提交。
获取需要回退的版本号,注意这里和上面的不一样,上面的是回退到之前的某一个版本,现在是撤销当前的版本 git revert 366f8c73e74ad43f892b30eefd0f1b9de1177e20 ,键盘i,进入编辑状态,改一下提交的名称,键盘Esc,冒号wq,回车,就ok了 然后再git push 到远程分支,即可。 这种方式可以只回退某一个版本,并且回退之后,还会保留之前版本的记录。推荐
|