一、git reset 与 git revert 区别
git reset【支持使用】 git revert【谨慎使用】
- revert 和 reset 都是撤销命令,revert 是创建一个新的提交commit, 指针像后移动,reset是覆盖以前的commit, 指针在原地或者向前移动;
- revert 是撤销某次提交,该提交之前的log记录都会保留,reset 是撤销某次提交,但是此之后的修改都会被退回到暂存区;
- revert 不会像 reset 毁尸灭迹,以前的提交记录也没有了,只会在原来的基础上新增一条记录
情况描述
实践操作理解其区别,git status查看,目前只有oytt_test.c一个文件在暂存区,
git log 查看提交记录,有三个版本的提交,
假设版本ID是a1, b1, c1, 和这个版本提交的文件
第三次提交, oytt_c1.c c1
第二次提交, oytt_b1.c b1
第一次提交, oytt_a1.c a1
git reset 使用
第一种情况,回退最后一次的提交
此時我执行 git reset c1~, 将第三次的提交reset
会将第三版所提交的文件,会回退到没提交的时候的样子
再git log查看, 此时的版本号HEAD已经指向了上一个提交了
第二种情况,回退第n次的提交
如果没有执行git reset c1~, 而是执行的
git reset a1~, 将第一次提交回退,会将这三个版本所有提交的文件都回退到未提交时的样子,此时再执行git log, 是只会指到 c1上一个HEAD
git revert使用
假设还是有三个同上一样的提交记录,用git revert会是怎样的结果呢?
首先先用Git log, 查看到当前的提交记录
// 主编尝试了学习2天,还是没有弄懂,这个revert用法精髓在哪里,准备后面问一下大佬级别跟我讲解一下,后面再补