簡體   English   中英

如何撤消 Git 主分支檢出

[英]How to undo a Git master branch checkout

首先,是的……我是個白痴。 我在不了解 Git 的情況下使用 Git,現在我很確定我已經丟失了大部分工作。 我以某種方式在圖中創建了一個看起來像分支但可能不是實際分支的東西。 我的主要工作實際上不在 master 分支 - 我將要解決的問題......在某個時候。 我剛剛解決了我的代碼中的一些煩人的問題,在我決定是時候嘗試解決問題時,把所有東西都分階段並提交了,因為 master 分支實際上是舊代碼。 我檢查了 master 分支,但沒有意識到這到底意味着什么(因為,我是個白痴),現在我找不到要恢復的主代碼的任何提示。 我正在使用 Visual Studio Code,這就是我用來檢查 master 分支的內容。 我還使用了 Git GUI,但在那里也找不到有關其他分支的任何信息。 我只是從來沒有想過 Git 會讓我處於代碼消失的情況,所以我沒有考慮檢查主分支。 但是,現在,我害怕做任何事情。 有什么方法可以查看另一個分支或恢復到我的主代碼嗎?

(從評論中復制,編輯了一些答案)

在這種情況下,第 1 步是:不要驚慌! 提交了,所以代碼應該還在那里。 現在是找到它的問題。

首先要看的是git reflog輸出。 我懷疑(並且評論后續證實)您所做的是使用 Git 所謂的“分離的 HEAD”進行提交。 當您git checkout某個分支時,這些提交會立即被放棄——但就像一般的放棄提交一樣,默認情況下它們至少可以再恢復30 天。

從命令行解釋器 - bashcmd.exe或 powershell 或其他任何 - 運行git reflog 仔細查看每個提交消息。 如果其中任何一個是您提交的內容,請獲取左側的縮寫哈希 ID,然后使用:

git branch newname hash

為該哈希 ID 創建一個新的分支名稱。 新名稱現在使您可以訪問提交,以及您在“分離 HEAD”模式下所做的任何早期提交。 它現在也應該出現在所有圖形用戶界面中,例如 Git GUI 和 Visual Studio Code(盡管我自己從未使用過 VS)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM