git reset
和 git reset --hard
区别
先说知识点
有时候,进行了错误的提交,但是还没有push到远程分支,想要撤销本次提交,可以使用git reset –-soft/hard命令
缺省情况
git reset
缺省为git reset --mixed
二者区别:
git reset –-soft
:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可git reset –-mixed
:回退到某个版本,只回退了commit的信息,并且恢复到index file一级。如果还要提交,需要重新add,再commit即可git reset -–hard
:彻底回退到某个版本,本地的源码也会变为上一个版本的内容(误操作后需要学git reflog
挽救),撤销的commit中所包含的更改被冲掉
我忘了知识点踩坑
沙雕认为
-
当下情况:最新版本的100M压缩包已经在本地删除,但是本地版本库中之前有个版本中还有,所以git push到gitee会被拒收…但是git一定要先传输完前面的版本之后再传后面的修改(所以我要帮git本地仓库手动执行git rm前面版本的文件,或者忘了文件名,通过下面3的复杂的操作,来完成此项操作)
-
真的不知道怎么去掉本地仓库的4commit,因为去不掉的话就会先向远程库提交超100M文件然后被拒接,所以原地重复…
-
然后如果git rm 忘了那个压缩包的名字了,所以直接回退版本到昨天的样子,然后再git reflog回来并展示今天的所有修改,git checkout归还所有修改,然后把今天的修改备份,之后再回到昨天的版本库,然后重新提交今天的内容,除了你个超过100M的压缩包
慢慢懂了
奇怪,最后一次版本回退又没有删除本地文件,可能是因为恢复过?
原来是git reset --hard 和 git reset --soft的区别
所以我幸幸苦苦寻找了好久的取消commit而不影响工作区就是git reset --soft
真是汗啊,因为用得少,所以学了又忘了,所以现在踩一遍坑,使得自己更深刻了,也提醒了自己 对于基础知识 还是要多重复,学习多次,不断加深记忆,或者很可能还是会踩坑
参考:https://blog.csdn.net/yangfengjueqi/article/details/61668381