git刪除文件包括以下幾種情況
- 刪除本地文件,但是未添加到暫存區;
- 刪除本地文件,并且把刪除操作添加到了暫存區;
- 把暫存區的操作提交到了本地git庫;
- 把本地git庫的刪除記錄推送到了遠程服務器github。
git對于刪除操作有極大的撤銷空間,下面分別針對上面4種情況進行恢復操作。
一、刪除了本地文件,但未添加到暫存區;
選擇要刪除的文件12.md
刪除本地文件12.md
此時發現刪除錯誤了要進行恢復操作
恢復文件
二、刪除了本地文件,并且已經把刪除操作添加到了暫存區
刪除本地文件
通過git status查看狀態
查看刪除狀態
看提示可以知道,此時如果操作 git checkout 12.md 可以恢復刪除文件
如果操作 git add/rm 12.md 可以把刪除狀態添加到暫存區
我們進行添加操作
添加到暫存區
查看狀態,可以知道刪除操作已經被添加到了暫存區,
查看添加狀態
此時如果要撤銷操作,從提示可以知道,進行 git reset HEAD 12.md可以把刪除操作退回到本地刪除狀態,然后按照上面1的操作就可以恢復文件
從暫存區回滾
恢復文件
三、從暫存區把刪除操作提交到了本地git庫
提交刪除操作
查看狀態 git status
查看刪除狀態
可以看到有一個提交改動,此時如果要撤銷,就必須對git進行版本回滾操作
通過 git log 命令查看git庫的所有版本信息
查看git庫版本
如果感覺信息太多,可以查看簡潔log版本 輸入 git log --pretty=oneline
簡潔版log信息
看到一大串類似 6aef622c4……8445f2429f的用16進制表示的字符串是每次 commit 的ID版本號,此時我們進行版本回滾操作
選擇ID的前幾位字符串就足夠表示版本的唯一性,輸入命令 git reset --hard 6aef62
版本回滾
查看本地文件恢復情況
四、如果刪除操作已經推送到了遠程github服務器中,可以通過 git push 操作來進行推送
推送到遠程服務器
服務器刷新前的狀態
服務器刷新前的狀態
刷新服務器
刷新服務器后的狀態
可以看到文件被從服務器中刪除了,如果此時進行文件恢復操作就需要像上面第三步那樣進行版本回滾操作
當然了,這個版本回滾是在本地進行的,然后把回滾后的版本提交
git版本回滾
把回滾后的版本提交到遠程服務器 git push
版本提交出錯
可以看到提交出錯,因為git默認是高版本覆蓋低版本,但不能反過來操作,因為回滾的版本比服務器此時的版本低,所以此時常規手段是無效的,但可以進行版本的暴力提交——force
通過git的提示 git push -h 可以查看到 force的說明
查看force的解釋
進行暴力提交 git push -f
暴力提交
刷新github遠程服務器刷新操作
文件失而復得
如果要在服務器中回到刪除文件的高級git版本版本該怎么操作呢?
- 當然了,最簡單的辦法就是把費了老勁恢復的文件再次刪除就可以,這樣效果上是可以的,但是之前的那個git版本號其實是丟失了。
- git中有一個命令 reflog 可以查看每次提交的信息,包括 commit ID和名稱,可以通過提交信息找到之前的版本好,然后重新回滾就可以了。
查找commit ID
進行回滾操作
版本回滾成功
然后再進行暴力提交
暴力提交
刷新github服務器
刷新服務器