git系列 git命令之撤銷回退篇

2021-10-11 03:19:54 字數 2631 閱讀 6220

#撤銷指定檔案

git checkout --

# 撤銷所有

git checkout --

.

git checkout – . 丟棄全部,也包括:新增的檔案會被刪除、刪除的檔案會恢復回來、修改的檔案會恢復。

請務必記得 git checkout --

是乙個危險的命令。 你對那個檔案在本地的任何修改都會消失——git 會用最近提交的版本覆蓋掉它。 除非你確實清楚不想要對那個檔案的本地修改了,否則請不要使用這個命令。

#撤銷所有

git reset head .

#撤銷指定檔案

git reset head

這個命令僅改變暫存區,並不改變工作區,這意味著在無任何其他操作的情況下,工作區中的實際檔案同該命令執行之前無任何變化。

撤銷提交修改,即將commit操作撤銷。

#回退最近的一次提交,即將本次提交撤銷,回到暫存區

git reset --hard head^

適用場景:開發過程,需求邏輯尚未實現,突然要切換版本解決問題,但是本次修改的**並不想提交本地倉庫,使用statsh命令暫存修改。

#暫存本地修改

git stash

#檢視暫存的資訊

git stash list

#應用最近一次暫存的內容

git stash pop

#應用指定版本的暫存內容1}

#清空暫存棧

git stash clear

適用場景:版本之間的合併,如果合併過程中,出現同檔案同區域**衝突,自己無法判斷應用哪個版本的邏輯,寫該邏輯的同事不在,放棄本次合併。

命令:git merge --abort
命令git reset

- git reset --soft: 將分支回退到指定提交,工作區維持現狀不變,暫存區會在現有基礎上增加該commit之後的提交。

- git reset --mixed: (預設操作)將分支回退到指定提交,暫存區也被同步為該指定提交,工作區保持不變。

- git reset --hard: 將分支回退到指定分支,暫存區和工作區都會被同步為該指定的提交。

git reset後的三個引數回退程度是依次遞進。

soft最輕微,它不會重置當前工作區和暫存區,只會將回退版本後續的提交加到暫存區。

mixed會改變暫存區,使它和回退版本同步。

hard會重置工作區和暫存區,使它和回退版本一致。

/* 

git reset --soft target

*/working index head target working index head

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

-a b c c a b c

a b c a a b+c a

/* git reset --mixed target

*/working index head target working index head

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

-a b c c a c c

a b c a a a a

/* git reset --hard target

*/working index head target working index head

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

-a b c c c c c

a b c a a a a

git 所有撤銷 回退命令

git add 後撤銷 撤銷所有add檔案 git reset head 撤銷單個add檔案 git reset head filenamegit commit 後撤銷 只回退commit的資訊,保留修改 git reset soft head 徹底回退到上次commit版本,不保留修改 git r...

Git基礎系列 撤銷 回滾

撤銷一次commit head 1 git reset soft head 1git reset hard head 1git commit amend執行了git reset hard head,回滾 執行了add和commit,可回滾。圖4.1 提交log 圖4.1中,head 為各個執行的命令...

Git 撤銷 回滾操作

workdir進行add操作將當前修改同步到 index,執行commit操作同步到head,執行push上傳到server。git reset head commitid 使用head或者commitid覆蓋index,不影響head和workdir,如果是在commit之後執行這個操作相當於同時...