git reset:
hard模式:
reset --hard 會在重置 HEAD 和branch的同時,重置stage區和工作目錄里的內容。當你在 reset 后面加了 --hard 參數時,你的stage區和工作目錄里的內容會被完全重置為和HEAD的新位置相同的內容。換句話說,就是你的沒有commit的修改會被全部擦掉。
如果輸入 git reset --hard HEAD^,這時候不僅stage區和工作目錄的內容被擦掉了,而且HEAD和當前branch分支會切換到上一條commit中。
soft模式:
reset --soft 會在重置 HEAD 和 branch 時,保留工作目錄和暫存區中的內容,並把重置 HEAD 所帶來的新的差異放進暫存區。這種模式下會保存工作區的內容;
hard和soft區別在於,hard會清空工作目錄和暫存區,soft會保留工作目錄;
mixed模式:
默認情況下的模式,reset不加參數,就是mixed模式;
保留工作區目錄,清空暫存區。把工作區修改,暫存區的內容以及reset導致的新文件差異都放進工作目錄中。簡而言之,把所有差異都混合放在工作目錄中。
所以如果想把暫存區和工作區的內容都撤銷:
git reset --hard
//如果加上參數還可以撤銷已經commit的內容 例如:git reset --hard HEAD^
如果僅僅撤銷工作區的內容:
git checkout --file
說到底reset的本質是移動HEAD,起到了撤銷commit的作用。同時配合參數還可以修改工作區和暫存區(具體影響看模式,hard,soft,mixed)。
參考鏈接:
Git學習02 --暫存區,撤銷修改,刪除文件:https://www.cnblogs.com/zqlmmd/p/5541334.html
撤銷修改(撤銷本地工作區的修改):https://blog.csdn.net/tsq292978891/article/details/78966550
Git reset三種模式:https://www.jianshu.com/p/c2ec5f06cf1a
