2013-05-06 101 views
18

看來,我不應該在github上刪除一個分支。如何在github上取消刪除分支?

我所做的是如下:

1 - 我添加一個新的.gitignore到我的系統

2 - 我用

git rm -r --cached . 
git add . 
git commit -m ".gitignore is now working" 

當我這樣做,我有一個分支在我的本地系統上,但服務器有兩個分支。

然後我推我的分支到服務器,因爲我沒有第二個分支,第二個分支已被刪除的服務器上。

我怎樣才能把它帶回來?

我使用Github作爲遠程服務器。

+0

你是如何推動你的分支? – juanpastas 2013-05-06 12:24:27

+0

@juanpastas:我使用VS內部的git,並使用git> push> push多個分支,並選擇我沒有在本地存儲庫 – mans 2013-05-06 12:26:31

+0

* push上的分支。見http://stackoverflow.com/questions/1992364/git-recover-deleted-remote-branch – juanpastas 2013-05-06 12:33:23

回答

58

如果你知道最後一次提交的刪除分支的消息,你可以這樣做:

git reflog 

#搜索消息

fd0e4da [email protected]{14}: commit: This is the commit message I want 

#結賬修訂

git checkout fd0e4da 

git checkout [email protected]{14} 

#創建分支

git branch my-recovered-branch 

#推分支

git push origin my-recovered-branch:my-recovered-branch 
+1

但是,如果您不知道該提交消息? – Alper 2015-10-16 12:39:28

+0

你知道什麼? – juanpastas 2015-10-16 20:14:26

+0

使搜索git reflog更容易一點:git reflog | grep'這是我想要的提交信息' – jfountain 2016-04-19 19:27:23

3

如果你git fetch remote && git checkout -b remote_branch_name

+1

謝謝,但它不起作用:$ git fetch remote fatal:'remote'似乎不是git存儲庫 fatal:無法從遠程存儲庫讀取。 請確保您擁有正確的訪問權限 並存在存儲庫。 – mans 2013-05-06 12:23:49

+1

'remote'是你遠程回購的名字(在這種情況下是GitHub)。嘗試使用'git remote list'來查看遠程倉庫的名稱(我認爲它是'origin')並使用該名稱而不是'remote' – 2013-05-06 12:24:58

8

如果這個分支被拉入請求過程中被刪除,您可以使用撤消正確的,在用戶界面「恢復分支」按鈕。

棘手的部分實際上是找到一個已合併和關閉的公關,您只需要知道要放入URL的URL或PR號碼。您可以嘗試查看已刪除的通知電子郵件,或者只是猜測PR號碼。

寫這個原因reflog沒有幫助我恢復隊友提交給一個分支我從來沒有拉過我的本地git。

+1

爲我節省了很多的傷心! :) – amohr 2016-06-11 01:27:19