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


当前回答

添加到tfe答案:git源代码的contrib/区域(在git.git存储库中)中还有git-resurrect.sh脚本,这可能会对您有所帮助。

git restore<name>尝试查找分支提示的痕迹调用<name>,并尝试恢复它。当前,reflog是搜索签出消息,并使用-r合并消息。具有-m和-t,将扫描所有ref的历史记录,以便将<name>合并到other/将<other>合并到<name>中(分别)提交主题很慢,但可以让你重新提起别人的话题分支。

其他回答

如果您已经将分支推送到远程服务器,那么尝试使用git checkout<branch>,git将尝试从本地计算机中的最后一个源镜像进行克隆。

大的是

如果您正在使用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>

如果您使用的是Git扩展

虽然很旧,但当您在google恢复已删除的分支时,此线程是列表的顶部。我使用的是git扩展而不是命令行,所以我不熟悉这些命令,但reflog命令给了我一个线索,所以我在这里发布了我的git扩展解决方案,供其他使用git扩展的人阅读。

转到工具栏上的视图下拉列表选择Show reflog references

您删除的分支现在应该可以查看和选择,只需单击它并将其签出即可。

如果删除了分支并忘记了它的提交id,可以执行以下命令:

git log --graph --decorate $(git rev-list -g --all)

之后,您将能够看到所有提交。然后,您可以对这个id执行git签出,并在这个提交下创建一个新的分支。