簡體   English   中英

Git撤銷本地分支刪除

[英]Git undo local branch delete

我剛剛刪除了錯誤的分支,並使用git branch -D branchName了一些我需要的實驗性更改。

如何恢復分支?

您可以使用git reflog查找分支最后一次提交的 SHA1。 從那時起,您可以使用重新創建分支

git branch branchName <sha1>

編輯:正如@seagullJS 所說, branch -D命令會告訴您 sha1,所以如果您還沒有關閉終端,它會變得非常簡單。 例如,這會刪除並立即恢復名為master2的分支:

user@MY-PC /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba).    <-- This is the SHA1 we need to restore it!

user@MY-PC /C/MyRepo (master)
$ git branch master2 130d7ba

如果你知道分支的最后一個SHA1,你可以試試

git branch branchName <SHA1>

您可以使用git reflog找到 SHA1,在解決方案 --defect link-- 中進行了描述。

如果您還沒有推送刪除,您可以簡單地執行以下操作:

$ git checkout deletedBranchName

如果您剛剛刪除了分支,您將在終端中看到如下內容:

Deleted branch branch_name(was e562d13)
  • 其中 e562d13 是一個唯一 ID(又名“SHA”或“hash”),這樣您就可以恢復已刪除的分支。

要恢復分支,請使用:

git checkout -b <branch_name> <sha>

例如

git checkout -b branch_name e562d13 

按着這些次序:

1:輸入:

git reflog show 

這將顯示所有提交歷史記錄,您需要選擇具有您想要取回的最后一次提交的 sha-1

2:使用您選擇的Sha-1 ID創建一個分支名稱,例如:8c87714

git branch your-branch-name 8c87714

首先:備份整個目錄,包括 .git 目錄。

第二:您可以使用git fsck --lost-found獲取丟失提交的 ID。

第三:變基或合並到丟失的提交上。

第四:在將 -D 或 --force 與 git 一起使用之前,請務必三思:)

您還可以閱讀有關如何從此類錯誤中恢復的精彩討論

編輯:順便說一句,不要運行git gc (或讓它自己運行——即不要運行git fetch或任何類似的東西),否則你可能會永遠失去你的提交。

謝謝,這有效。

git 分支 new_branch_name sha1

git checkout new_branch_name

//可以在我的舊分支中看到我的舊簽入文件

這對我有用:

git fsck --full --no-reflogs --unreachable --lost-found
git show d6e883ff45be514397dcb641c5a914f40b938c86
git branch helpme 15e521b0f716269718bb4e4edc81442a6c11c139

如果您通過Source Tree刪除了一個分支,您可以通過轉到View -> Show Command History輕松找到已刪除分支的 SHA1。

它應該具有下一個格式:

Deleting branch ...
...
Deleted branch %NAME% (was %SHA1%)
...

然后只需按照原始答案即可。

git branch branchName <sha1>

如果您使用 Jetbrains IDE(Goland、phpstorm 等)的 GUI 刪除了一個分支

git windows(left-down corner of IDE) -> console tab ->現在您可以看到IDE執行的命令的日志並從該日志中找到分支名稱和SHA1

暫無
暫無

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

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