git reset與git revert的區(qū)別
- git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。
- git reset是把HEAD向后移動了一下,而git revert是HEAD繼續(xù)前進,只是新的commit的內(nèi)容和要revert的內(nèi)容正好相反,能夠抵消要被revert的內(nèi)容。
git reset --soft與git reset --hard的區(qū)別
- git reset --soft命令會讓版本回到某次commit后的狀態(tài),但并不改動工作目錄中的文件,git reset --hard命令將版本庫回退到指定版本后不僅僅是將本地版本庫的頭指針全部重置到指定版本,也會重置暫存區(qū),并且會將工作區(qū)代碼也回退到這個版本。
實際操作
git revert
1.首先在本地庫中,添加三個文件,每添加一個commit一次,得到三個版本。

1
2.然后輸入git revert head命令,發(fā)現(xiàn)新增了一個版本,該版本中只有1.html和2.html,撤銷了第三個版本新添加的3.html。

2
git reset --soft與git reset --hard
1.首先在本地庫中,添加三個文件,每添加一個commit一次,得到三個版本。

1
2.然后輸入git reset --soft HEAD^命令,回滾到上一版本,執(zhí)行后發(fā)現(xiàn)第三個版本也刪除,回滾到第二個版本,此時因為git reset --soft命令只讓版本回到某次commit后的狀態(tài),所以無需再執(zhí)行git add命令,可直接再次執(zhí)行git commit命令,再次回到第三個版本。

2
3.最后輸入git reset --hard HEAD^命令,同樣是回滾到第二個版本,需要重新執(zhí)行git add命令,在執(zhí)行git commit命令才能回到第三個版本。

3