Git reset命令的使用

Git reset 命令有三個主要選項:git reset --soft; git reset --mixed; git reset --hard;

git reset --soft

將HEAD引用指向給定提交。索引(暫存區(qū))和工作目錄的內(nèi)容是不變的,在三個命令中對現(xiàn)有版本庫狀態(tài)改動最小。

git reset --mixed(git reset默認(rèn)的模式)

HEAD引用指向給定提交,并且索引(暫存區(qū))內(nèi)容也跟著改變,工作目錄內(nèi)容不變。這個命令會將索引(暫存區(qū))變成你剛剛暫存該提交全部變化時的狀態(tài),會顯示工作目錄中有什么修改。

git reset --hard

HEAD引用指向給定提交,索引(暫存區(qū))內(nèi)容和工作目錄內(nèi)容都會變給定提交時的狀態(tài)。也就是在給定提交后所修改的內(nèi)容都會丟失(新文件會被刪除,不在工作目錄中的文件恢復(fù),未清除回收站的前提)。

用表格看起來會更清楚些:


操作一下看一下實際效果:

首先在一個版本庫中修改追蹤文件,然后提交,description叫做 add button

使用git log 查看歷史提交

copy記錄add button 的前一次提交 add label 的哈希ID “7c5a658fbceb904ad877c4254d183e68aed1ddd0”,作為我們reset的給定提交。

git stauts 查看一下當(dāng)前版本庫中文件狀態(tài)

顯示nothing to commit ,在add button 提交后未對版本庫中文件做修改

執(zhí)行git reset --soft 7c5a658fbceb904ad877c4254d183e68aed1ddd0 命令,然后使用git status 查看文件狀態(tài)。

然后再使用git log 查看歷史提交記錄。

會發(fā)現(xiàn)add button 已經(jīng)沒有了,版本庫已經(jīng)回滾到add label提交的狀態(tài)了,但是在我們add button 提交修改的文件 里面修改的內(nèi)容沒有丟失,只是回到了未提交的狀態(tài)。

將文件再次提交,同樣取名add button ,繼續(xù)git reset --mixed 操作。

同樣是回滾到了add button 之前的add label 提交。被修改的文件內(nèi)容也沒有丟失,但是修改的文件為紅色了(未執(zhí)行add 操作)。

將文件再次提交,同樣取名add button ,繼續(xù)進(jìn)行git reset --hard 操作。

執(zhí)行完git reset --hard 命令后,使用git status 查看文件狀態(tài),回滾到add label 提交,add button被修改的文件內(nèi)容已經(jīng)沒有了,丟失了。版本庫中的文件已經(jīng)完全回到剛提交完add label時的狀態(tài)。

git reset 根據(jù)需要使用不同的命令,使用 --hard時一定考慮回滾后文件的丟失!

最后編輯于
?著作權(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)容