git 使用 git reset 回退本地的修改

2021-09-10 19:37:03 字數 2082 閱讀 1719

一、git 概念

工作區(working):相當於我們本地的檔案系統。

暫存區(staging):通過git add命令,將本地工作區的檔案提交至暫存區。

本地倉庫(local repo):通過git commit命令,把暫存區的所有檔案提交至本地倉庫。

遠端倉庫(remote repo):通過git push命令,把本地倉庫的所有檔案提交至遠端倉庫。

head:通俗的講,它指向當前分支正在使用的commit_id,當然它還有很多其他用法,之後我們用一篇新的博文來詳細講解。

二、git reset 原理

通過git reset --hard命令修改 head 的指向的commit_id來達到版本回退的目的。

如何查詢commit_id

方法一:使用 git log 檢視歷史commit_id

方法二:通過 head 命令來代替 commit_id。

head~ 回退乙個版本

head~~ 回退兩個版本

head~~~ 回退三個版本

head~1 回退乙個版本

head~2 回退兩個版本

head~3 回退三個版本

git reset包涵 soft、mixed、hard 三個引數項,這三個引數項控制了 reset 的回退羅輯,下面我們來了解下這三個引數。

git reset --soft

git reset --mixed

git reset --hard

假定我們的 git 倉庫狀態如下圖所示,其中:

綠色表示to be committed的檔案,也就是未 commit 的檔案。

紅色表示untracked files的檔案,也就是未 add 的檔案。

三、soft 引數項soft 引數:回退本地倉庫到指定版本,也就是只回退 commit 的檔案。

執行git reset --soft commit_b命令後,倉庫狀態入下圖所示:

四、mixed 引數項

mixed 引數:回退本地倉庫、暫存區到指定版本,也就是回退 commit 和 add 的檔案。該引數為 reset 命令的預設引數。

執行git reset --mixed commit_b命令後,倉庫狀態入下圖所示:

五、hard 引數項

hard 引數:回退本地倉庫、暫存區、工作區到指定版本,也就是回退 commit 和 add 的檔案,對於untracked files的檔案是不做回退的。

執行git reset --hard commit_b命令後,倉庫狀態入下圖所示:

五、注意注意注意

對於untracked files的檔案是不做回退的。

對於untracked files的檔案是不做回退的。

對於untracked files的檔案是不做回退的。

git reset 版本回退

git reset hard soft mixed merge keep 或head a hard 重設 reset index和working directory,自從以來在working directory中的任何改變都被丟棄,並把head指向。b soft index和working dire...

git reset 回退操作記錄

push到遠端的commit需要回退操作 例如 當前commit節點為d,之前有abc三個commit操作 git reset hard c hard 表示徹底清空當前工作目錄和暫存區的內容,當發現提交的d節點存在錯誤,需要回退到c節點時執行,執行後回退節點之後的所有更改都不會出現到當前工作目錄裡中...

git reset 版本回退

reset 引數 soft mixed hard,會對狀態 working index head 進行重置 git reset mixed 此為預設方式,不帶任何引數的git reset,即時這種方式,它回退到某個版本,只保留原始碼,回退commit和index資訊 git reset soft 回...