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然後使用revert 後面跟上git提交的commitidon 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
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...