Git 基本指令架構圖

// Git 基本指令架構圖 ▲

還原技巧

  • 回頭觀看版本內容:git checkout 編號
  • 返回最新的版本:git checkout master(分支名稱)
  • 還原工作目錄上已更改的檔案 :git checkout -- <file>
  • 索引檔案>還原到工作目錄:git reset HEAD
  • 還原前一個版本 : git reset HEAD^
  • 還原前兩個版本:git reset HEAD^^
    • ^ 也可換成 ~,也可以用數字取代,例如 git reset HEAD^2 等於 git reset HEAD ~~
  • 還原前兩個版本,所有更新檔案都放棄git reset HEAD^^ --hard
  • 觀看詳細歷史紀錄:git reflog ( 連同已刪的資料也看的到 )

EX01 實做

#01 新增 project1110 資料夾,新建 index.html ,於內建立 HTML 環境並上傳至本地數據庫。

  • 執行指令 cd 資料夾路徑git init → git add . → git commit -m "建立環境"

Git分支中階1

Git分支中階2

#02 於 index.html 內加入 h1 標籤,上傳本地數據庫。

  • 執行指令 git add . → git commit -m "add h1"

Git分支中階3

Git分支中階4

#3 想還原至 " 建立環境 " 這個版本

  • 執行指令 git reset HEAD^
    • ^ 會還原前一個版本,如果要還原兩個就 git reset HEAD^^
    • 執行 git reset HEAD^ 資料還會在工作目錄上也就是本機專案資料夾上 ( Sourcetree 還可見 Uncommitted changes 這個 Commit ,也就是 h1 這個版本 )。

Git分支中階5

Git分支中階6

#4 想還原至 "建立環境" 這個版本,所有更新檔都放棄 ( 放棄加入的 h1 版本,紀錄完全清除 )

  • 如 h1 版本連紀錄都不要,完全清除,執行 git reset HEAD^^ --hard
  • 執行 git reset HEAD^ 資料還會在工作目錄上也就是本機專案資料夾上 ( Sourcetree 還可見 Uncommitted changes ,也就是 h1 這個版本 )。要下指令 git reset HEAD^ --hard 工作目錄上的資料才會完全刪除。 ( Sourcetree 中 Uncommitted changes 消失 )

Git分支中階7

Git分支中階8

git reset HEAD^ 與 git reset HEAD^ --hard 差異

reset 時 master 與 HEAD 會一起行動。

git reset HEAD^

  • 資料還會在工作目錄 ( 本機資料夾 ) 上。Commit 也都還在,只是回到上一個 Commit 。

git reset HEAD^ --hard

  • 完全不保留原始任何資訊,會連同工作目錄 ( 本機資料夾 ) 中實體檔案內容與 Commit 都進行清除,也就是直接將工作區、暫存區的檔案都清空。

還原大招 git reflog

救回 git reset HEAD^ --hard 誤刪的資料

  • 執行 git reflog 查被刪除的資料編號。
    • 可查看所有歷史紀錄,連刪除的資料都看的到git log 也可查看資料,但看不到已刪除的。
  • 執行 git reset 資料編號 --hard 就可把刪除的資料救回來了。
    • resrt 模式下, HEAD 與 master 會一起行動。
    • 使用 --hard 參數可以強迫放棄 Reset 之後修改的檔案。

資料來源

最後修改日期: 9 月 17, 2020

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。