git reset
- 实现:git reset的作用是修改HEAD的位置
- git reset [–soft | --mixed | --hard
--mixed
会保留源码,只是将git commit和index 信息回退到了某个版本.
git reset 默认是 --mixed 模式(git reset --mixed === git reset)
--soft
保留源码,只回退到commit 信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
--hard
源码也会回退到某个版本,commit和index 都回回退到某个版本.(注意,这种方式是改变本地代码仓库源码)
-
实现过程:
-
适用场景:如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
-
操作:
1、commit后为版本号
git log
2、修改目标版本
git reset --hard ‘目标版本号’3、查看版本信息,此时本地的HEAD已经指向之前的版本
git log4、提交 (git push会报错 因为提交的版本比服务器版本低)
git push -f5、如果不想解决冲突的话可以取消撤回
git revert --abort
git revert
-
原理:撤销某一版本的提交但不影响其他的版本。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西。
-
实现过程:
-
操作:
1、查看提交版本
git log2、指定修改的版本
git revert -n ‘版本号’3、提交修改
git add . → git commit -m 版本名4、推送服务器
git push