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

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ū)代碼也回退到這個版本

image.png

git reset --soft xxx

soft (修改版本庫,保留暫存區(qū),保留工作區(qū))

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

image.png

git revert xxx

revert

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

image.png

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ù)前進,只是新的commit的內(nèi)容和要revert的內(nèi)容正好相反,能夠抵消要被revert的內(nèi)容。

作者:shadow123

鏈接:http://m.itdecent.cn/p/faf4f6edb8bc

來源:簡書

簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。

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

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

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