git reset 與 git revert 的區(qū)別

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)并注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容