在使用SourceTree来管理Git项目的时候,有时需要回滚项目,具体的回滚操作包含本地回滚和远程回滚。建议回滚前先做好代码备份。
本地回滚
使用命令git reset
进行本地回滚操作,本地回滚操作一步即可完成。
1 | # 回退到指定的提交版本,22f8aae 为某次提交的提交号。 |
–hard:本地的源码和本地未提交的源码都会回退到某个版本,包括commit内容,和git自己对代码的索引都会回退到某个版本,any local changes will be lost。
–soft:保留源码,只能回退到commit信息到某个版本,不涉及到index的回退,如果还需要提交,直接commit即可。比如我选择soft方式来进行回退,我的本地代码和本地新添加的尚未commit的代码都没有改变。
–mixed:会保留源码,只是将git commit和index信息回退到某个版本。
远程回滚
远程回滚的操作流程是,先回滚本地操作,然后将本地的修改强行push到远程仓库。具体操作分为以下2步:
1.在需要回滚的提交记录上右键
选择将master重置到这次提交
,选择重置(强行合并)到需要回滚的历史节点。
2.打开终端,cd到项目目录,执行git push origin master -f
,即可。
origin:远程仓库名
master:分支名称
-f:force,意为强制、强行
3.如果出现 ! [remote rejected] master -> master (pre-receive hook declined)
错误,需要去gitlab网站去除master分支保护,才可以强制推送。
具体错误信息如下:
1 | $ git push origin master -f |
需要去到gitlab的网站上去除master分支保护。