2016-09-07 120 views
3

之前,我去任何進一步的,讓我解釋一下,爲什麼我們不能做:恢復遠程的Git分支

git checkout -b <branch> <sha> 

基本上分支(姑且稱之爲DEV1)是另外一個開發人員的機器上。他已經做了一些承諾並推動了它們。該分支從另一分支(我們可以稱之爲特徵)分支,該分支被重命名爲開發開發被創建爲的一個分支特徵然後功能被刪除。 開發者分支(dev1)然後由其他開發者在本地和遠程刪除。當使用github for windows時,他發現我們要求推送的所有分支,因此他刪除了整個文件夾(它跳過了回收站)並重新克隆了回購站。 所以現在他不能做:

git reflog 

,因爲它沒有任何的歷史。我看不到他的提交,因爲他們從未被本地拖到我的機器上。

那麼,有鑑於此,是否有辦法遠程恢復其分支? 我一直在尋找一個命令,顯示所有被刪除的遠程分支,但到目前爲止,一直無法找到這樣的命令。

任何幫助將避免數週的開發工作!

+0

由於dev1在被刪除之前被推送,因此dev1的提示提交及其父項預計存在於遠程回購中,很可能是作爲懸掛對象存在。創建一個新的克隆並運行'git fsck'來查找所有懸掛的對象並查找其中的提交對象。 'git cat-file -t '可以列出對象類型。運行'git show'來逐一檢查這些懸而未決的提交。我想你可以找出哪個提交是dev1的提示。如果找到了,運行'git branch dev1 '恢復它,然後再推'dev1'。 – ElpieKay

+0

他做了一個克隆,當他做了一個'git fsck'時,他什麼也沒有返回 – r3plica

+0

我想到了兩種可能性。一個是dev1的提示現在仍然被其他分支或標籤引用,也許是'development'。另一個是懸掛的物體被git gc修剪。如果第一個,你可以在「發展」的歷史中找到它。如果第二個,也許只有一個文件恢復工具可以幫助。 – ElpieKay

回答

1

您可以使用GitHub Events API來查看用戶或回購的過去90天內發生的最後300個事件(以每頁30個事件分頁)。您可以在那裏搜索該分支上的最後一個推送事件,從而獲取需要重新實例化爲分支的SHA-1。

E.g。在這裏你可以看到我最近的事件:https://api.github.com/users/Vampire/eventshttps://api.github.com/users/Vampire/events?page=2,a。秒。 O操作。

或此處存儲庫的事件vivin/gradle-semantic-build-versioninghttps://api.github.com/repos/vivin/gradle-semantic-build-versioning/events,https://api.github.com/repos/vivin/gradle-semantic-build-versioning/events?page=2,a。秒。 O操作。

+0

聽起來不錯,但回購是私人的,沒有創建應用程序和使用OAuth,沒有出現我可以看到與回購相關的事件。 – r3plica

+0

你可以。只需使用基本身份驗證(https://developer.github.com/v3/auth/)。我只是嘗試了它,並且使用基本身份驗證,我得到了有關我的私人要求,回購等的信息,而我卻沒有。 – Vampire