基本概念
git倉庫可分為3個部分組成:工作目錄、 緩存區(qū)、 提交歷史

git reset
在提交層面上,reset 將一個分支的末端指向另一個提交。
實例
-
新建一個文件夾aa,創(chuàng)建a.md,輸入hello,初始化為git倉庫,依次執(zhí)行添加并提交。
-
修改a.md(改為為hello world),添加并提交
-
再次修改a.md(改為hello world zdy),添加并提交
-
查看版本,發(fā)現(xiàn)有3個提交歷史。
-
執(zhí)行 git reset 命令,例如 :git reset HEAD~1(返回到上次提交歷史) 查看狀態(tài),暫存區(qū)發(fā)生改變,查看提交歷史發(fā)現(xiàn)最近一次提交已移除。而工作區(qū)內(nèi)容沒有變化。

-
git reset -soft– 緩存區(qū)和工作目錄都不會被改變
git reset -mixed–即默認狀態(tài)下的git reset, 緩存區(qū)和你指定的提交同步,但工作目錄不受影響
git reset -hard– 緩存區(qū)和工作目錄都同步到你指定的提交
git revert
首先撤銷某一個commit提交,同時生成一個新的commit,從而不破壞歷史版本
Revert 撤銷一個提交的同時會創(chuàng)建一個新的提交。
實例
仍然以上例中文件演示,
1.報錯,此時打開a.md,修改


-
查看狀態(tài)
3.執(zhí)行新增了一個提交歷史,而原來那個提交歷史仍然存在。

二者區(qū)別
- git revert會產(chǎn)生新的提交,并不會真正刪除history。git reset 則會刪除history。
- git revert 只是改變提交層面,而不涉及文件層面的操作





