一、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 倉庫狀態如下圖所示,其中:git reset --mixed
git reset --hard
綠色表示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 回...