教你找回 git stash 數據中的數據
導讀 | 由於不正確的 git 指令,他把儲存在 stash 中的變更刪除了。在這悲傷的情節之後,我們試圖尋找一種恢復他所做工作的方法,而我們做到了!首先警告一下:當你在實現一個大功能時,請將它分成小塊並定期提交。長時間工作而不做提交並不是一個好習慣。下面就示範怎樣從 stash 中恢復誤刪的變更。 |
我用作範例的倉庫中,只有一個原始檔案 “main.c”,如下所示:
#
它只有一次提交,即 “Initial commit”:
該檔案的第一個版本是:
#我將在文件中寫一些程式碼。對於這個例子,我並不需要做什麼大的改動,只需要有東西放進 stash 中即可,所以我們只增加一行。 “git diff” 的輸出如下:
現在,假設我想從遠端倉庫中拉取一些新的更改,當時我還不打算提交我自己的更改。於是,我決定先 stash 它,等拉取遠端倉庫中的變更後,再把我的變更恢復應用到主分支上。我執行下面的命令將我的更改移動到 stash 中:
git stash
使用指令"git stash list" 查看 stash,在這裡能看到我的變更:
#我的程式碼已經在一個安全的地方,而且主分支目前是乾淨的(使用指令 git status檢查)。現在我只需要拉取遠端倉庫的更改,然後把我的更改恢復應用到主分支上,而且我也應該是這麼做的。
但是我錯誤地執行了命令:
git stash drop
它刪除了 stash,而不是執行了下面的命令:
stash pop
這條指令會在從堆疊中刪除 stash 之前套用它。如果我再次執行指令 git stash list
,就能看到在沒有從堆疊中將變更還原到主分支的之前,我就刪除了它。 OMG!接下來怎麼辦?
好消息是:git 並沒有刪除包含了我的更改的對象,它只是移除了對它的引用。為了證明這一點,我使用命令 git fsck,它會驗證資料庫中物件的連接和有效性。這是我對該倉庫執行了 git fsck 之後的輸出:
由於使用了參數 --unreachable,我讓 git-fsck 顯示所有無法存取的物件。正如你所看到的,它顯示並沒有不可訪問的物件。而當我從 stash 中刪除了我的更改之後,再次執行相同的指令,得到了一個不一樣的輸出:
現在有三個不可存取物件。那麼哪一個才是我的改變呢?實際上,我不知道。我需要透過執行指令 git show 來搜尋每一個物件。
#就是它! ID 號碼 95ccbd927ad4cd413ee2a28014c81454f4ede82c 對應了我的變更。現在我已經找到了丟失的更改,我可以恢復它。其中一種方法是將此 ID 取出並放進新的分支,或直接提交它。如果你得到了你的更改物件的 ID 號,就可以決定以最好的方式,將變更再次恢復應用到主分支上。對於這個例子,我使用 git stash 將變更還原到我的主分支上。
git stash apply 95ccbd927ad4cd413ee2a28014c81454f4ede82c
另外要重點記住的是 git 會週期性地執行它的垃圾回收程式(gc),它執行之後,使用 git fsck 就不能再看到不可存取物件了。
以上是教你找回 git stash 數據中的數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)

在 Sublime Text 中運行 Python 腳本的方法:安裝 Python 解釋器配置 Sublime Text 中的解釋器路徑按 Ctrl B(Windows/Linux)或 Cmd B(macOS)運行腳本如果需要交互式控制台,請按 Ctrl \(Windows/Linux)或 Cmd \(macOS)
