git 撤銷暫存區

2021-09-01 13:17:37 字數 2554 閱讀 4871

git的撤銷與回滾在平時使用中還是比較多的,比如說我們想將某個修改後的檔案撤銷到上乙個版本,或者是想撤銷某次多餘的提交,都要用到git的撤銷和回滾操作。撤銷分兩種情況,乙個是commit之前,乙個是commit之後,下面具體看下這兩種情況。

一.git commit之前

未新增到暫存區的撤銷(沒有git add)

新增進暫存區的撤銷(git add後)

$ git status

on branch test_git

changes not staged for commit: 沒有新增到暫存區

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

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

可以通過

git checkout -- filename來撤銷修改
再次檢視檔案狀態發現選擇的檔案已經成功被撤銷了。

$ git status

on branch test_git

changes not staged for commit:

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

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

如果想將多個檔案一次性撤銷可以用

git checkout -- .
上面是 未新增到暫存區的撤銷

下面是新增到暫存區的

$ git status

on branch test_git

changes not staged for commit:

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

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

$ git add -a

$ git status

on branch test_git

changes to be committed: 已經新增暫存區了

(use "git reset head ..." to unstage)

從暫存區撤銷

unstaged changes after reset:

如果想一次性將所有暫存區檔案撤銷回來,還是上面的命令,不過不用加檔案路徑。

$ git reset head

unstaged changes after reset:

二.git commit之後

如果當commit提交後想撤銷的話,這就需要revert命令。git revert 命令是撤銷某次操作,而在此次操作之前和之後的提交記錄都會保留。

先修改了幾個檔案然後commit 再用git log檢視提交記錄。

commit 2842c8065322085c31fb7b8207b6296047c4ea3

author: songguojun date: sat apr 28 11:21:30 2018 +0800

add content

然後使用revert  後面跟上git提交的commitid

git  revert 2842c8065322085c31fb7b8207b6296047c4ea3

revert "add content"

this reverts commit 2842c8065ffe2085c31fb7b8207b6296047c4ea3.

# please enter the commit message for your changes. lines starting

# with '#' will be ignored, and an empty message aborts the commit.

# on branch test_git

# changes to be committed:

然後在推送到遠端更新遠端倉庫**,修改的檔案就撤銷回來了。注意的是revert奇數次生效,偶數次又回到之前的修改狀態。比如乙個檔案內容是a,那麼修改為ab,revert後檔案變成了a,如果在revert後檔案又還原成ab了。

還有就是如果想回到之前某個版本,可以用reset命令,可以回退到某次提交,那該提交之後的提交都會回滾,不過這種覆蓋是不可逆的,之前的提交記錄都沒有了。所以平時開發中盡量注意,避免使用reset。

用法:git reset --hard commit_id

git  reset --hard fdeb212a5418cc8e31f32d63cf197550297468ec

head is now at fdeb212 增加mysql埠配置

然後在提交到遠端覆蓋。

Git之暫存區

git index是乙個包含檔案索引的目錄樹,如同乙個虛擬的工作區,記錄檔名和檔案的狀態資訊 時間戳 檔案長度等 檔案內容則儲存在git物件庫.git objects目錄中通過檔案索引建立檔案和物件庫中物件實體之間的對應關係。執行git status或git diff命令掃瞄工作區改動時,先根據.g...

恢復git暫存區

1 右鍵開啟git bash here 2 輸入命令找到專案 cd d 碟符 xidaiw 資料夾 3 列出目錄下的檔案,輸入命令 ls la 4 查詢專案,輸入命令 cd web 8081 專案名 5 查詢暫存區列表,輸入命令 git stash list 6 恢復最近的乙個,輸入命令 git s...

Git學習 暫存區

下面需要學習兩個基本概念 工作區 暫存區 其中,工作區指的是資料夾目錄下所能看到的區域 暫存區指的是一塊快取區,通過下面的命令首先是將檔案都新增到暫存區當中 git add 檔案接著使用下面的命令,將暫存區中的內容新增到版本倉庫當中 git commit m comment 是中需要銘記的是,add...