赞
踩
昨天说到用git reset进行回滚操作,还有git revert的操作,它们的区别如下:
git reset
git reset的作用是还原Index的状态或修改本地分支HEAD的位置。这个命令适合用于从某个提交点开始,重新开新的分支。比如,如果某个提交之后的代码我们都不要了,就可以在本地reset至指定commit,然后开一个新的branch继续新的开发(原来分支在远程上没有发生任何变化的)。
使用git reset是不影响远程分支的,一切都在本地发生。如果回退需要很快影响远程分支的,应该使用git revert。
两种情况
第一种情况:只是在本地commit,还没有push到远程分支,可通过以下命令实现:
git reset --soft|--mixed|--hard
git push 本地分支名称 远程分支名称 --force
这里的就是每次commit的SHA-1,可以在git log里查看到
--mixed: 只是将git commit和index 信息回退到某个commit版本,仍会保留该commit_id之后提交的代码
--soft: 只回退到commit信息到某个版本,不涉及index的回退,会保留源码,如果还需要提交, 直接commit即可.
--hard: 源码会回退到某个版本,commit和index 都会回退到某个版本. (这种方式会改变本地代码仓库源码)
当然有人在push代码以后,也使用 reset --hard 回退代码到某个版本之前,但是这样会有一个问题, 线上的代码仍是回退之前的,线上commit, index都没有变, 当你把本地代码修改完提交的时候你会发现全是冲突.....
git revert
假如某些旧提交我们不
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。