在項目中我們也經常會使用到撤銷操作 使用這一節我們就講一講Git的撤銷操作
撤銷操作主要有如下幾種
git commit --amend 撤銷上一次提交 並講暫存區文件重新提交
git checkout -- <file> 拉取暫存區文件 並將其替換成工作區文件
git reset HEAD -- <file> 拉取最近一次提交到版本庫的文件到暫存區 改操作不影響工作區
git reset HEAD -- <file>
該操作 可以 拉取最近一次提交到版本庫的文件到暫存區 並且該操作不影響工作區
簡單的來說 就是可以幫我們從版本庫中 拉取文件到 暫存區 當我們把工作區的某個文件弄亂了 我們就可以使用該命令 把版本庫中的那個文件拉到暫存區 然後在拉回工作區
舉個例子 我們的項目目錄 和Git版本庫提交日誌 如下圖
我們現在在 version 5.0版本 5.0版本readme.md 裏面有 hello world ! 這個字符串 而我們需要 readme.md 裏面是空白的 我們只記得 version 1.0 裏面readme.md 是空白的 所以我們現在需要把 version 1.0 裏面的 readme.md 拉到我們的工作區
這時我們就不得不分析一下 git reset HEAD -- <file>
這個命令的各個參數了
filename
一看就知道 是我們要拉取的文件名
HEAD
可以理解爲一個遊標 一直指向當前我們所在版本庫的地址 就是我們當前所在版本庫的頭指針
當然 我們也可以不使用HEAD 可以直接使用版本庫的地址 版本庫地址 可以用 git log
命令打印出來
如下圖 version 1.0 的版本庫地址爲 f0a1684
我們執行 git reset f0a1684 -- readme.md
結果如下圖
使用 git status
參看倉庫狀態 如下圖
我們發現 現在暫存區裏的文件 和 工作區 當前版本庫的 都不一樣 這說明我們已經成功的把 version 1.0 中 空的 readme.md 拉取到了 暫存區 因爲工作去和當前版本庫裏的 readme.md 裏面都應該有 hello world !
我們在使用 git checkout -- <file>
命令來把 暫存區文件拉到工作區
工作區 readme.md 現在變成空了 拉去成功 說明我們的 git reset HEAD -- <file>
命令執行成功