git add後又修改,如何撤銷最後的修改?

2021-10-21 19:01:40 字數 1471 閱讀 5774

比如readme檔案,修改其中內容,執行git status

$ git status

on branch master

your branch is up to date with 'origin/master'

.changes not staged for commit:

(use "git add ..." to update what will be committed)

(use "git restore ..." to discard changes in working directory)

modified: readme.md

no changes added to commit (use "git add" and/or "git commit -a"

)

現在執行git add 將readme.md放到暫存區,然後再看看git status的輸出:

$ git status

on branch master

your branch is up to date with 'origin/master'

.changes to be committed:

(use "git restore --staged ..." to unstage)

modified: readme.md

現在檔案已經暫存,下次提交時就會記錄到倉庫。假設此時,再修改readme.md,執行git stastus看看:

$ git status

on branch master

your branch is up to date with 'origin/master'

.changes to be committed:

(use "git restore --staged ..." to unstage)

modified: readme.md

changes not staged for commit:

(use "git add ..." to update what will be committed)

(use "git restore ..." to discard changes in working directory)

modified: readme.md

並且執行git status -s,可以得到一種更為緊湊的輸出

$ git status -s

mm readme.md

輸出中標記位有2欄,左邊指明了暫存區的狀態,右欄指明了工作區的狀態。表明readme檔案已暫存,暫存後又做了修改。

那麼如何撤銷第二次的修改?

問題的本質,暫存區的結構

根據上文分析

暫存區中應該有add後的檔案快照,暫存區儲存的是add後的檔案快照和這些快照的索引檔案

git 撤銷已經git add的檔案

git add 操作時,有時會誤新增一些不想提交的檔案,如何解決?1 誤add單個檔案 git reset head 將file退回到unstage區 2 誤add多個檔案,只撤銷部分檔案 git reset head 將file退回到unstage區 git rm 與 git reset的區別 g...

git add 不執行 git 常用撤銷命令

ethan 讀完需要 3分鐘 速讀僅需 1 分鐘 每次使用 git 需要進行版本回退相關的操作都要在搜尋引擎重新查詢相關命令,很是費時間,今天有空總結一下,算是記筆記方便以後使用。1 撤銷本地當前所有修改 git reset hard如果本地檔案修改得一團亂,但是還沒有 commit,可以通過這個命...

git 修改 撤銷

git status 初始狀態是,什麼都沒有修改 on branch master nothing to commit working directory clean 修改了乙個檔案fu 狀態變成 root 172.18 4.100 gitlearn git status on branch mas...