如果我运行gitbranch-d XYZ,是否有方法恢复该分支?有没有办法像我没有运行delete branch命令一样返回?


当前回答

大的是

如果您正在使用GIT遵循以下简单步骤https://confluence.atlassian.com/bbkb/how-to-restore-a-deleted-branch-765757540.html

如果您正在使用smartgit并已经推送该分支转到原点,找到该分支,然后右键单击,然后签出

其他回答

对于未安装Git的GitHub用户:

如果你想从GitHub网站恢复它,你可以使用他们的API获取回购相关事件的列表:

第一

查找那些SHA(提交散列):卷曲-ihttps://api.github.com/repos/PublicUser/PublicRepo/events…或私人回购:curl-su YourUserNamehttps://api.github.com/repos/YourUserName/YourProject/events(将提示输入GitHub密码)(如果回购需要双因素授权,请参阅下面对该答案的评论。)

Next

转到GitHub并创建一个新的临时分支,该分支将被永久删除(最好是Chrome)。

•转到分支机构并删除该分支机构。

•在同一页面上,不重新加载,打开DevTools,Network面板。现在准备。。。

•单击恢复。你会注意到一条新的“线”。右键单击它并选择“复制为cURL”并将此文本保存在某个编辑器中。

•附加到复制的代码行末尾,这一行:-H“Cookie=”。

您现在应该得到以下内容:

    curl 'https://github.com/UserName/ProjectName/branches?branch=BranchSHA&name=BranchName' -H 'Cookie:' -H 'Origin: https://github.com' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-US' -H 'User-Agent: User-Agent' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Accept: */*' -H 'Referer: https://github.com/UserName/ProjectName/branches' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --data 'utf8=%E2%9C%93&authenticity_token=token' --compressed

最后一步

将“BranchSHA”替换为SHA哈希,并将BranchName替换为所需名称(顺便说一句,从web重命名分支是一个很好的方法)。如果你不是太慢,无论如何你都需要提出这个要求。例如,只需将粘贴复制到终端。

P.S.

我意识到这可能不是“最简单的解决方案”或“正确的”解决方案,但它是在有人发现它有用时提供的。

我使用以下命令来查找和检索已删除的分支。第一步来自gcb的描述。

$ git fsck --full --no-reflogs --unreachable --lost-found > lost
$ cat lost | cut -d\  -f3 > commits
$ cat commits | xargs -n 1 git log -n 1 --pretty=oneline

现在根据提交注释查找gitcommit-id(git-SHA),并在下面的命令中使用它。使用之前找到的GIT-SHA签出一个名为new-branch的新分支:

$ git checkout -b NEW-BRANCH GIT-SHA

如果您正在使用VSCode。。。并且你在删除分支之前的某个时间点将其与服务器同步。。。

注意,gitbranchdelete只删除本地副本,而不是服务器上的副本。首先,在Git面板(左侧工具栏上的Git图标)中,查看分支,看看分支是否仍在“origin/your_branch_name”下。如果是这样的话,只需选择它,您就可以取回代码(建议您立即在其他地方复制/粘贴/保存代码)。

如果没有看到“origin/your_branch_name”,请安装GitLens扩展。这允许您在服务器存储库中直观地四处查看,并找到同步到服务器的副本。如果您有多个存储库,请注意,为了使存储库显示在GitLens中,可能需要从所需的存储库中至少打开一个文件。然后:

打开GitLens面板扩展存储库您应该看到类别列表:分支/参与者/远程/Stashes等

您应该在“Branches”或“Remotes->Origins”下找到YourLostTreasure。希望您会看到一个具有所需名称的分支-如果展开它,您应该会看到在该分支中更改的文件。双击文件名以打开它们,然后立即备份该代码。

如果你没有立即看到你丢失的分支,四处看看,如果你发现了有希望的东西,立即打开它并获取代码。我不得不四处寻找,直到找到TheGoldenBranch,但即便如此,代码还是丢失了最后一次或两次保存(可能是因为我在尝试a-Branch-Merge-buncy-incidentaly-clicking-Branch-Delete之前未能同步到服务器)。我的搜索被不必要地拉长了,因为当我第一次找到分支时,我并不完全确定名称是否正确,所以一直在寻找,花了一些时间才重新找到第一个分支。(因此,将卡普姆(Carpum),然后继续寻找。)

大的是

如果您正在使用GIT遵循以下简单步骤https://confluence.atlassian.com/bbkb/how-to-restore-a-deleted-branch-765757540.html

如果您正在使用smartgit并已经推送该分支转到原点,找到该分支,然后右键单击,然后签出

是的,您应该能够执行git reflog(无缩写),并在已删除分支的顶端找到提交的SHA1,然后只需git checkout[sha]。一旦您完成了提交,就可以使用gitcheckout-b[branchname]从那里重新创建分支。


感谢@Cascabel的这款浓缩/单内胆版本,以及@Snowscrash如何获得sha。

如果你刚刚删除了分支,你会在你的终端中看到类似这样的内容:deleted branch<your branch>(was<sha>)。然后在这一行中使用<sha>:

git checkout -b <your-branch> <sha>