weiweilong 關注
git reset 命令有三個主要選項:git reset --soft; git reset --mixed; git reset --hard;
git reset --soft
將head引用指向給定提交。索引和工作目錄的內容是不變的,在三個命令中對現有版本庫狀態改動最小。
git reset --mixed(git reset預設的模式)
head引用指向給定提交,並且索引內容也跟著改變,工作目錄內容不變。這個命令會將索引變成你剛剛暫存該提交全部變化是的狀態,會顯示工作目錄中有什麼修改。
git reset --hard
head引用指向給定提交,索引內容和工作目錄內容都會變給定提交時的狀態。也就是在給定提交後所修改的內容都會丟失(新檔案會被刪除,不在工作目錄中的檔案恢復,未清除**站的前提)。
用**看起來會更清楚些:
操作一下看一下實際效果:
首先在乙個版本庫中修改追蹤檔案,然後提交,description叫做add button
使用git log 檢視歷史提交
copy記錄add button的前一次提交add label的雜湊id 「7c5a658fbceb904ad877c4254d183e68aed1ddd0」,作為我們reset的給定提交。
git stauts 檢視一下當前版本庫中檔案狀態
顯示nothing to commit ,在add button 提交後未對版本庫中檔案做修改
執行git reset --soft 7c5a658fbceb904ad877c4254d183e68aed1ddd0命令,然後使用git status 檢視檔案狀態。
然後再使用git log 檢視歷史提交記錄。
會發現add button 已經沒有了,版本庫已經回滾到add label提交的狀態了,但是在我們add button 提交修改的檔案 裡面修改的內容沒有丟失,只是回到了未提交的狀態。
將檔案再次提交,同樣取名add button ,繼續git reset --mixed操作。
同樣是回滾到了add button 之前的add label 提交。被修改的檔案內容也沒有丟失,但是修改的檔案為紅色了(未執行add 操作)。
將檔案再次提交,同樣取名add button ,繼續進行git reset --hard操作。
執行完git reset --hard 命令後,使用git status 檢視檔案狀態,回滾到add label 提交,add button被修改的檔案內容已經沒有了,丟失了。版本庫中的檔案已經完全回到剛提交完add label時的狀態。
git reset 根據需要使用不同的命令,使用 --hard時一定考慮回滾後檔案的丟失!
git reset命令三種命令的區別
預設選中的型別,會將工作目錄的修改 暫存區的內容 git add操作提交的地方 以及由 reset 所導致的新的檔案差異,都放進工作目錄。比如 現在reset到第一次提交,b和c檔案都會放到工作目錄,將之前提交的版本檔案全部恢復到未暫存狀態 回退乙個版本,不清空暫存區,將已提交的內容恢復到暫存區,不...
git reset 使用及回滾
目錄 一 git reset 引數 1.soft 2.mixed 3.hard 二 如何回滾檔案 1.修改完,還未執行git add 2.使用git add 提交到暫存區,還未commit之前 3.已經git commit,還未git push 4.已經git push 僅僅移動當前head指標,不...
git reset 使用及回滾
git reset 使用及回滾 一 git reset 引數 1.soft 2.mixed 3.hard 二 如何回滾檔案 1.修改完,還未執行git add 2.使用git add 提交到暫存區,還未commit之前 3.已經git commit,還未git push 4.已經git push 一...