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

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

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

image.png
git revert和git reset的區(qū)別
git revert與git reset最大的不同是,git revert 僅僅是撤銷某次提交,而git reset會(huì)將撤銷點(diǎn)之后的操作都回退到暫存區(qū)中。
1、git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。
2、在回滾這一操作上看,效果差不多。但是在日后繼續(xù)merge以前的老版本時(shí)有區(qū)別。
因?yàn)間it revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch時(shí),導(dǎo)致這部分改變不會(huì)再次出現(xiàn),但是git reset是之間把某些commit在某個(gè)branch上刪除,因而和老的branch再次merge時(shí),這些被回滾的commit應(yīng)該還會(huì)被引入。
3、git reset 是把HEAD向后移動(dòng)了一下,而git revert是HEAD繼續(xù)前進(jìn),只是新的commit的內(nèi)容和要revert的內(nèi)容正好相反,能夠抵消要被revert的內(nèi)容。
作者:shadow123
鏈接:http://www.itdecent.cn/p/faf4f6edb8bc
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。