本人新手仅作参考,欢迎指正。
git log
在说明区别之前先了解下git log命令,它可以让你查看每一次你commit到暂存区的操作在里面可以看到你commit时的注释。
在 git log状态中需要按q进行退出,查阅资料最多可以保存30天内的修改内容。
git log
git reset --soft
soft可以让commit回到某个状态而且只有commit改动不会修改意外的文件下面做个简单的演示。
新建一个txt然后写个A,commit注释A。
A.JPG
vim A.JPG
然后把test.txt的A写为B,commit注释B
B.JPG
用git reset --soft让commit回到A的状态status对比看一下变化
soft.JPG
可以看到commit已经回到A的状态而本地的文件没有改动,用git show也可以看得到commit的状态。
show.JPG
git reset --hard
这条命令可以把commit和本地文件都回到你指定的状态,注意操作可能会让你丢失数据。
下面用git reset --hard指令回到A状态
hard.JPG
可以看到本地文件和commit都回到注释为A的时候
hard.2.JPG
hard.2.JPG
git revert,可以看到没有覆盖
revert是撤销上一次的
这里和上面操作一样新建一个文档,看log记录只有两次修改记录。
现在我们执行revert可以看到commit不是单纯的被替换掉而是在注释B的基础上新建了一个版本,内容显示这次将恢复到A注释。在test.txt看到本地文件也跟同一起回复到A注释的时候。
可以看出revert是撤销了上一次提交然后再新建了一个commit而之前提交的commit也会保留
git log
test.txt
revert和reset最大的区别
reset | revert |
---|---|
覆盖 | 撤销 |