亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

git stash刪除后,有辦法恢復嗎

git stash刪除后,有辦法恢復嗎

Git
HUWWW 2019-05-14 08:08:15
git stash刪除后,有辦法恢復嗎
查看完整描述

3 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

首先輸入

git fsck --lost-found

    

 

會看到 一條一條的記錄 類似 

   dangling commit 7010e0447be96627fde29961d420d887533d7796

 

復制dangling commit 的id(其他的dangling blob不用理會) 

然后輸入

git show 7010e0447be96627fde29961d420d887533d7796

 

    查看具體內容, 找到你想要的記錄

    記錄中會描述日期和摘要,

    日期是你git stash 的日期, 

    摘要會記錄你是在哪一條commit 上進行git stash操作的, 

    類似(WIP on integration-xf: 2e205ac Merge branch 'release' into develop)

    貌似只能一條記錄一條記錄的查看

 

找到你想要的記錄后輸入

git merge 7010e0447be96627fde29961d420d887533d7796

 

這樣就還原了你git stash drop, git stash clear  的內容

 




查看完整回答
1 反對 回復 2019-05-15
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

打開git庫文件,可以看到文件夾內的所有文件都沒了,只有一個git倉庫還存在。

這時在文件夾上右擊,在彈出的菜單中選擇"Git Bash Here"這一項。

進入Bash頁面后,我們執行ls操作,可以發現,文件夾下同樣不存在文件。

這時我們再執行git reflog。reflog它會記錄所有HEAD的歷史,也就是說當你做 reset,checkout等操作的時候,這些操作會被記錄在reflog中。

如果我們要找回文件,只需要做如下操作(*表示上一步中出現的log號):
git reset --hard *

我們再次執行ls操作,可以發現文件已經還原回來了.

所以,如果因為reset等操作丟失一個提交的時候,你總是可以把它找回來。

 



查看完整回答
反對 回復 2019-05-15
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

首先git status一把,看看此時工作區的狀態

[xxx@xxx static_files]$ git status
# On branch master
nothing to commit (working directory clean)123

可見此時沒有任何修改的內容。
再看看具體有什么

xxx@xxx static_files]$ ls
abbr_data breakfast_data room_type_data12

此時總計有三個文件。OK,讓我們干掉其中一個

[xxx@xxx static_files]$ git rm abbr_data
rm 'static_files/abbr_data'
[xxx@xxx static_files]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: abbr_data
#
[xxx@xxx static_files]$ ls
breakfast_data room_type_data1234567891011

此時工作區的文件就只剩兩個了,abbr_data這個文件,已經被我們干掉。
如果我們想要恢復,怎么辦呢?

[xxx@xxx static_files]$ git checkout -- abbr_data
error: pathspec 'static_files/abbr_data' did not match any file(s) known to git.12

直接checkout,是不行的。
那怎么辦呢?其實在git status中,已經告訴我們怎么辦了。

[xxx@xxx static_files]$ git reset HEAD abbr_data
Unstaged changes after reset:
M static_files/abbr_data123

用reset命令,先將abbr_data這個文件找回來。

[xxx@xxx static_files]$ git status
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: abbr_data
#
no changes added to commit (use "git add" and/or "git commit -a")123456789

再checkout一把

[xxx@xxx static_files]$ git checkout -- abbr_data
[xxx@xxx static_files]$12

看到checkout以后沒有任何提示,這事就成了。因為git的哲學跟unix的哲學一樣,沒消息就是最好的消息。。。
再ls一下,果然,abbr_data找回來了。

[xxx@xxx static_files]$ ls
abbr_data breakfast_data room_type_data




查看完整回答
反對 回復 2019-05-15
  • 3 回答
  • 0 關注
  • 2009 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號