當我們不小心把檔案或目錄刪除時,有什麼辦法可以還原檔案呢?
git checkout
、git reset
指令可以解決這個問題。
指令功能:還原「檔案內容」
與所在的 分支(branch)有關
git checkout
指令 + 分支名稱 —> Git 切換到指定的分支git checkout
指令 + 檔名 / 路徑 —> Git 不會切換分支,而是把檔案從 .git 目錄裡拉一份到目前的工作目錄。👉 此指令不會修改索引(即暫存區)所儲存的管理資訊,而是將暫存區(Staging Area)裡的內容、檔案,覆蓋工作目錄(Working Directory)的內容或檔案。
常用情況:
👉 檔案已加入追蹤,但想還原之前工作目錄所做的修改。
🛠 實際操作
新增一個我們要編輯的檔案
$ touch index.html
打開檔案,編輯內容
因為 git_practice 有被 Git 版本控制,所以在這個工作目錄下的檔案也都有被 Git 控制,此時用 Visual Studio Code 打開時可以看到有顯示橘黃色的 M 。
這是我第一次編輯的內容,要將這些內容加至暫存區
將剛剛所編輯的內容使用指令加至暫存區,並查看狀態
$ git add . # 將所有檔案加至暫存區
$ git status # 查看狀態
檔案狀態可以看到顯示為:Changes to be committed
(modified)
代表已加至暫存區,並等待提交。因為我們剛才是先新增 index.html 檔案,然後有將檔案編輯了內容,所以 Git 可以偵測到檔案被修改(原本是空的變成有內容),因此狀態為 modified
。
現在我們回到 index.html 檔案,又新增了一行改變了內容
變更內容後存檔,並查看狀態 git status
可以看到紅色的 modified: index.html ,這是 Git 有偵測到我們對檔案做了修改,但這還只是在工作目錄區所做的變動,並未加至暫存區,因此回饋訊裡也說明可以使用 git add
加至暫存區並等待提交,或是使用 git checkout
捨棄這次在工作目錄區所做的修改動作。
那麼如果我已經存檔了這次的更動,但後來覺得做錯很多步驟,不想要這一次存擋前的變更,想找回上一次的檔案內容,可以怎麼做呢?
輸入 git checkout 指令,並查看狀態
$ git checkout index.html # 還原 index.html 的檔案內容
// git checkout + [檔案名稱]
輸入指令後,回去看我們的 index.html 檔案,會變成怎麼樣呢?
可以發現又再次回到原本的檔案內容了!
複習 git checkout 的觀念是: