赞
踩
回滚代码是我们程序员经常要操作的,使用 SVN 是很简单,但使用 Git 也并不难,Git 也有很多好用的客户端(比如:Sourcetree),简单回滚操作都是没问题的。
如果你喜欢用 Git 命令行,也可以使用 git revert
这种,但它是有回滚痕迹的,会多一个提交记录,今天栈长就介绍一些没有痕迹的理想状态的回退。
未提交有以下两种情况:
1)已经在工作区修改了文件,但还未执行 git add
提交到暂存区。
2)已经执行了 git add
提交到暂存作,但还未执行 git commit
提交本地仓库。
这时候回退:
git reset --hard
这样等于清空了暂存区和工作区,本地仓库回退到了最新的提交状态。
这种情况是指已经执行了 git add
提交到暂存区操作,又执行了 git commit
提交本地仓库,但还未 git push
推送到远程仓库。
2.1 上个版本回退:
git reset --hard HEAD^
2.2 多个版本回退:
git reset --hard HEAD~N
N:代表数字,要回退的次数。
2.3 指定版本回退:
git reset --hard <commit_id>
2.4 直接回退到远程最新版本:
git reset --hard origin/master
这种情况是指已经执行了 git add
提交到暂存区操作,又执行了 git commit
提交本地仓库,还执行 git push
推送到远程仓库。
参考上面的 2.1~2.4 的方法,先强制回退到本地仓库到上 N 个版本,再进行强制推送到远程仓库。
回退到上个版本示例:
- git reset --hard HEAD^
- git push -f
第一种情况一般在工具上很容易操作,比如在 Sourcetree:
但 2、3 种情况在工具上面就没法办法操作了,至少在 Sourcetree 上是不行,需要在命令行进行回退,如果大家有知道的也可以分享下。
以上总结了一些栈长平时常用的 Git 回退方法,当然还有一些其他回退方式,以上也已经够用了,希望对大家有帮助。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。