<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

恢復被刪除的Git stash記錄

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2023-12-10 15:46 ? 次閱讀

一、問題

有時候在 git stash 非常有用,但是我們能由于一些錯誤的操作,導致將 git stash 中內容被刪除掉,誤刪 stash.

二、知識點

git fsck命令用于檢查 Git 倉庫中的對象的完整性和一致性。它可以發現和報告一些潛在的問題,比如損壞的對象、丟失的對象引用等。

  1. 檢查對象完整性:確保所有的對象(提交、文件樹、文件等)在物理上存在且沒有損壞。如果有對象損壞,git fsck將報告并顯示問題。

  2. 尋找不可達對象:Git 使用引用來跟蹤對象,如果某個對象沒有任何引用指向它(即不可達對象),git fsck會發現并報告這些不可達的對象。

  3. 查找丟失的對象引用:它會檢查是否存在引用(比如分支、標簽等),但沒有對應的對象存在。這可能是因為刪除了對象或引用指向了一個不存在的對象。

  4. 輸出報告:將列出發現的問題,并提供相應的修復建議或提示。

三、復制一個副本

為了安全和不熟練操作 git stash 的同學,將當前項目準備一個副本,在副本中進行操作,防止第一個現場丟失。

四、查看 unreachable 列表

切換到副本中,所有的操作放在副本進行:

git fsck --unreachable

	

查看所有unreachable的記錄, 如同下面的例子:


	
git fsck --unreachable
Checking object directories: 100% (256/256), done.
unreachable blob 08a0724cff104d83f3c261b68487e5b5dfb0bc92
unreachable blob 09e0e7369d8c60923a53c8097674dde7f71a0cc0
unreachable blob 0b00205b03a9d5a7c311907b968d41da09ee0662
unreachable blob 0ba035459d1ce597a1cbba64a5f1073c467af198
unreachable blob 0f8093bb5835971fad89f8274387d15d38eba9c7
unreachable blob 11205462d9730314c6ac8f0320ef0c6247af4b7a

五、將 unreachable 內容提取到編輯器中

最好準備一個編輯器,將所有的內容復制出來,因為這個列表可能很長,在終端展示有限,也不好搜索,將其復制出來放在編輯器中(vscode)在內過多的時候有查找等優勢。

六、 認識 unreachable 分類

類型 描述
Commit 不再有分支或標簽指向的提交
Tree 不再有提交指向的文件樹
Blob 不再有文件樹指向的文件對象
Tag 不再有分支或提交指向的標簽
unreachable 一般表示 Git 對象的一部分,但由于沒有引用指向它們,因此被視為不可達

這里我們重點關注commit對象。

七、git show +展示信息

git show <sha>

	

根據返回的信息,判斷是不是我們需要恢復的內容,根據個人經驗, commit 是我們需要恢復的內容可能比較大

八、恢復

有目標的 sha key, 然后切換到 stash 的分支, 執行:

git stash apply + <sha>

	

可能會出現如下的錯誤:


	
fatal: '' is not a stash-like commit

解決辦法:使用 merge 命令

	
# 如果有合并沖突,解決沖突
git merge +<sha>


	

在副本中已經完成,相同的操作在目標項目中重新實現一次即可。

九、小結

本文主旨在恢復刪除的 git stash 存儲的內容,從副本出發,結合git fsck命令獲取unreachable列表,然后,根據自己的項目 使用git show 查看unreachable對象中的內容,找到目標對象,然后使用git stash apply 或者git merge 進行合并。如果這些操作符合我們的目標,在正式項目中重新演繹一次即可。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 終端
    +關注

    關注

    1

    文章

    1008

    瀏覽量

    29622
  • 編輯器
    +關注

    關注

    1

    文章

    792

    瀏覽量

    30448
  • Git
    Git
    +關注

    關注

    0

    文章

    195

    瀏覽量

    15468

原文標題:恢復被刪除的Git stash 記錄

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    git shell 常用命令

    -f a.a 強行移除修改后文件(從暫存區和工作區中刪除)git diff --cached 或 $ git diff --staged 查看尚未提交的更新git
    發表于 04-16 15:57

    手機通訊記錄被刪除怎么辦?

    恢復的數據類別,比如:通話記錄恢復等。點擊進入通話記錄恢復,手機數據恢復精靈會自動掃描。 做完上
    發表于 03-06 14:22

    QQ聊天記錄怎么恢復

    恢復精靈就會自動掃描手機里被刪除的QQ聊天記錄, 最后,我們勾選出系統掃描出的QQ聊天記錄,選擇需要恢復部分,勾選出來。等待系統幫我們
    發表于 03-09 10:49

    恢復Unix系統被刪除地文件

    恢復Unix系統被刪除地文件 與DOS/Windows不同,Unix文件被刪除后很難恢復,這是由Unix獨特的文件系統結構決定的。所以,要想恢復
    發表于 01-11 11:53 ?881次閱讀

    蘋果手機備忘錄刪除了怎么恢復?誤刪備忘錄找回教程

    在左上角處的下拉框中找到“僅顯示已刪除”并點擊,然后,從好友列表內中勾選出被刪除微信聊天記錄的微信好友,點擊圖標【恢復到電腦】就可以在電腦上查看了。
    發表于 06-15 16:23 ?5153次閱讀

    陌陌恢復大師:蘋果陌陌聊天記錄恢復教程

    在界面左側的好友框內我們會看到有部分好友顯示橘黃色,這些顯示橘黃的好友就是被刪除了陌陌聊天記錄。然后勾選出你想恢復陌陌聊天記錄,點擊“恢復
    發表于 07-30 22:24 ?2394次閱讀
    陌陌<b class='flag-5'>恢復</b>大師:蘋果陌陌聊天<b class='flag-5'>記錄</b><b class='flag-5'>恢復</b>教程

    蘋果恢復大師告訴你:微信刪除后怎么恢復聊天記錄

    進入微信聊天記錄界面。在界面中,我們可以看到左側好友列表框內有顯示兩種不同顏色的好友,橘黃色的好友表示被刪除了微信聊天記錄。然后,我們需要點擊橘黃色的好友頭像,勾選出需要恢復的微信聊天
    發表于 08-19 23:44 ?2190次閱讀
    蘋果<b class='flag-5'>恢復</b>大師告訴你:微信<b class='flag-5'>刪除</b>后怎么<b class='flag-5'>恢復</b>聊天<b class='flag-5'>記錄</b>

    怎樣找回被刪的微信聊天記錄

    將其刪除了可能會帶來不必要的麻煩,那么面對這種情況,我們應該如何處理?我們要怎樣找回被刪的微信聊天記錄呢? 這個就不得不提互盾蘋果恢復大師了,感覺還是非常好用的!要想輕松
    發表于 07-26 18:53 ?996次閱讀

    微信聊天記錄刪除了怎么恢復?怎么查找

    掃描結束,然后點擊微信按鈕,你會看到若干結果的;之后選中你想恢復的微信記錄,選好之后,點擊“導出所選按鈕”即可。如何才能查出別人刪除的微信聊天記錄?通過這種方法就能輕松找回你想要找回的
    發表于 07-31 16:51 ?961次閱讀

    微信聊天記錄刪除了怎么辦?恢復微信聊天記錄

    微信聊天記錄刪除了還能看到嗎,應該如何恢復?我們疆場會不小心將微信上的記錄給清空了,一般只要刪除了聊天窗口,我們就看不到
    發表于 08-03 16:51 ?3203次閱讀

    你會在Linux系統中恢復被刪除文件?

    當用戶意外地刪除了一個仍然需要的文件時,大多數情況下,是沒有簡便的方法可以重新找回或重建這個文件。不過,幸運的是文件是可以通過一些方法恢復的。當用戶刪除了一個文件,該文件并沒有消失,只是被隱藏了一段時間。
    發表于 05-13 09:26 ?1315次閱讀

    如何徹底刪除微信聊天記錄

    怎么徹底刪除微信聊天記錄不被恢復?方法不在多而在精!
    的頭像 發表于 08-26 16:44 ?6171次閱讀

    數據庫數據恢復-數據庫文件被刪除/分區被格式化的SQL SERVER數據恢復方案

    數據庫數據恢復-數據庫文件被刪除/分區被格式化的SQL SERVER數據恢復方案
    的頭像 發表于 09-21 14:34 ?517次閱讀

    如何在 Git恢復隱藏的修改記錄

    git stashgit stash pop 這樣的命令是用來擱置(藏匿)和恢復我們工作目錄中的變化的。在本教程中,我們將學習如何
    的頭像 發表于 10-09 14:09 ?545次閱讀

    數據庫數據恢復—MySQL數據庫表誤刪除記錄的數據恢復案例

    binlog。 數據庫故障&分析: 工作人員在執行Delete命令刪除數據時未添加where子句進行篩選,導致全表數據被刪除,刪除后未對該表進行其他操作。 在本案例中,由于mysql數據庫沒有備份也未開啟binlog日
    的頭像 發表于 11-09 15:16 ?760次閱讀
    數據庫數據<b class='flag-5'>恢復</b>—MySQL數據庫表誤<b class='flag-5'>刪除</b><b class='flag-5'>記錄</b>的數據<b class='flag-5'>恢復</b>案例
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>