git reset --hard --soft 與 git revert 的作用:
文件從暫存區(qū)回退到工作區(qū)
版本回退
git簡單的分為三個區(qū)域 :
1、工作區(qū)(working directory)
2、暫緩區(qū)(stage index)
3、歷史記錄區(qū)(history)
git reset --hard xxx
hard (修改版本庫,修改暫存區(qū),修改工作區(qū))
--hard HEAD~1 (或是版本號)意為將版本庫回退1個版本,但是不僅僅是將本地版本庫的頭指針全部重置到指定版本,也會重置暫存區(qū),并且會將工作區(qū)代碼也回退到這個版本

git reset --soft xxx
soft (修改版本庫,保留暫存區(qū),保留工作區(qū))
--soft HEAD~1 意為將版本庫軟回退1個版本,所謂軟回退表示將本地版本庫的頭指針全部重置到指定版本,且將這次提交之后的所有變更都移動到暫存區(qū)。

git revert xxx
- revert
-- git revert 也是撤銷命令,區(qū)別在于reset是指向原地或者向前移動指針,git revert是創(chuàng)建一個commit來覆蓋當(dāng)前的commit,指針向后移動。

git revert和git reset的區(qū)別
git revert與git reset最大的不同是,git revert 僅僅是撤銷某次提交,而git reset會將撤銷點之后的操作都回退到暫存區(qū)中。
1、git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。
2、在回滾這一操作上看,效果差不多。但是在日后繼續(xù)merge以前的老版本時有區(qū)別。
因為git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch時,導(dǎo)致這部分改變不會再次出現(xiàn),但是git reset是之間把某些commit在某個branch上刪除,因而和老的branch再次merge時,這些被回滾的commit應(yīng)該還會被引入。
3、git reset 是把HEAD向后移動了一下,而git revert是HEAD繼續(xù)前進(jìn),只是新的commit的內(nèi)容和要revert的內(nèi)容正好相反,能夠抵消要被revert的內(nèi)容。