之前,我去任何进一步的,让我解释一下,为什么我们不能做:恢复远程的Git分支
git checkout -b <branch> <sha>
基本上分支(姑且称之为DEV1)是另外一个开发人员的机器上。他已经做了一些承诺并推动了它们。该分支从另一分支(我们可以称之为特征)分支,该分支被重命名为开发。 开发被创建为的一个分支特征然后功能被删除。 开发者分支(dev1)然后由其他开发者在本地和远程删除。当使用github for windows时,他发现我们要求推送的所有分支,因此他删除了整个文件夹(它跳过了回收站)并重新克隆了回购站。 所以现在他不能做:
git reflog
,因为它没有任何的历史。我看不到他的提交,因为他们从未被本地拖到我的机器上。
那么,有鉴于此,是否有办法远程恢复其分支? 我一直在寻找一个命令,显示所有被删除的远程分支,但到目前为止,一直无法找到这样的命令。
任何帮助将避免数周的开发工作!
由于dev1在被删除之前被推送,因此dev1的提示提交及其父项预计存在于远程回购中,很可能是作为悬挂对象存在。创建一个新的克隆并运行'git fsck'来查找所有悬挂的对象并查找其中的提交对象。 'git cat-file -t'可以列出对象类型。运行'git show'来逐一检查这些悬而未决的提交。我想你可以找出哪个提交是dev1的提示。如果找到了,运行'git branch dev1 '恢复它,然后再推'dev1'。 –
ElpieKay
他做了一个克隆,当他做了一个'git fsck'时,他什么也没有返回 – r3plica
我想到了两种可能性。一个是dev1的提示现在仍然被其他分支或标签引用,也许是'development'。另一个是悬挂的物体被git gc修剪。如果第一个,你可以在“发展”的历史中找到它。如果第二个,也许只有一个文件恢复工具可以帮助。 – ElpieKay