Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
github是否在历史记录中保留删除的远程分支?若然,可否恢复?_Git_Github_Git Branch - Fatal编程技术网

github是否在历史记录中保留删除的远程分支?若然,可否恢复?

github是否在历史记录中保留删除的远程分支?若然,可否恢复?,git,github,git-branch,Git,Github,Git Branch,我想知道是否有办法在github中恢复远程删除的分支。历史记录清楚地记录了分支并与其他分支合并,但我不确定是否可以恢复已删除的分支 谢谢。可以请求GitHub支持,并让他们查看您的远程回购()的。 如果距离删除足够近(每个默认值少于30天),reflog仍然包含不再被任何分支引用的提交。 通过在其中一个提交上创建分支,可以再次访问这些提交 有关reflog的详细信息,请参阅“” 更新:回购所有者还可以查询GitHub事件API: 请参阅“”可以请求GitHub支持,并让他们查看您的远程回购()

我想知道是否有办法在github中恢复远程删除的分支。历史记录清楚地记录了分支并与其他分支合并,但我不确定是否可以恢复已删除的分支


谢谢。

可以请求GitHub支持,并让他们查看您的远程回购()的
如果距离删除足够近(每个默认值少于30天),reflog仍然包含不再被任何分支引用的提交。
通过在其中一个提交上创建分支,可以再次访问这些提交

有关reflog的详细信息,请参阅“”


更新:回购所有者还可以查询GitHub事件API

请参阅“”

可以请求GitHub支持,并让他们查看您的远程回购()的
如果距离删除足够近(每个默认值少于30天),reflog仍然包含不再被任何分支引用的提交。
通过在其中一个提交上创建分支,可以再次访问这些提交

有关reflog的详细信息,请参阅“”


更新:回购所有者还可以查询GitHub事件API

请参阅“”

是的,可以从git还原已删除的分支

查找提交ID:使用git reflog搜索分支 如果您在过去30天内在本地git回购中拥有分支机构,您可以使用以下工具:

git reflog
在reflog中搜索分支名称,并注意
头{x}
点或提交ID

从Reflog头点重新创建分支: 从提交ID重新创建分支: 您可以签出提交ID并从该提交点创建分支:

git checkout -b branch_name <commit id>
git签出-b分支机构名称

是的,可以从git恢复已删除的分支

查找提交ID:使用git reflog搜索分支 如果您在过去30天内在本地git回购中拥有分支机构,您可以使用以下工具:

git reflog
在reflog中搜索分支名称,并注意
头{x}
点或提交ID

从Reflog头点重新创建分支: 从提交ID重新创建分支: 您可以签出提交ID并从该提交点创建分支:

git checkout -b branch_name <commit id>
git签出-b分支机构名称

git reflog
将向您显示
HEAD
的历史记录。如果您删除的分支名为
foo
,那么在该输出中,您应该会看到类似
48534f5 HEAD@{0}:checkout:moving from master to foo
48534f5 HEAD@{1}:merge foo:Fast forward
这样的行。您可以搜索
git reflog
的输出,找出哪个提交必须是foo指向的最新提交


请务必意识到,删除foo时,“foo”reflog文件本身已被删除,但由于头部的reflog不同,它仍然存在。

git reflog
将向您显示
头部的历史记录。如果您删除的分支名为
foo
,那么在该输出中,您应该会看到类似
48534f5 HEAD@{0}:checkout:moving from master to foo
48534f5 HEAD@{1}:merge foo:Fast forward
这样的行。您可以搜索
git reflog
的输出,找出哪个提交必须是foo指向的最新提交


请务必意识到,“foo”reflog文件本身在删除foo时被删除,但由于头部的reflog不同,因此它仍然存在。

请查看此python脚本以了解github事件。


我创建它是为了拉取事件并使其可读,您可以将其导入grep并查找您感兴趣的分支。如果有足够的历史记录,您将看到所讨论的分支的delete事件,下一行将是最后一个推送事件,这就是您感兴趣的sha。

看看这个用于github事件的python脚本。


我创建它是为了拉取事件并使其可读,您可以将其导入grep并查找您感兴趣的分支。如果有足够的历史记录,您将看到有关分支的删除事件,下一行将是最后一个推送事件,这就是您感兴趣的sha。

当分支已被删除很长时间(在我的情况下,为1年),但您已为该分支打开拉取请求时,您可以通过在pull请求历史记录中搜索来恢复它


一旦找到该分支的拉请求,我就可以恢复该分支。相关的提交信息等也可以从pull请求中获得

当分支已被删除很长一段时间(在我的情况下,为1年),但您已为该分支打开拉取请求时,您可以通过在拉取请求历史记录中搜索来恢复它


一旦找到该分支的拉请求,我就可以恢复该分支。相关的提交信息等也可以从pull请求中获得

这有点绕圈子,但这里有一些方法

从Profile/Settings/Developer Settings/Personal Access Tokens(配置文件/设置/开发人员设置/个人访问令牌)中获取一个新的个人访问令牌(如果您还没有)

curl -u "username:PersonalAccessToken" -H "Accept: application/vnd.github.v3+json"  https://api.github.com/repos/RepoOwner/Repo/events
在响应中查找DeleteEvent;在那里你可以找到你删除的分支的孤立SHA

git fetch SHA
git switch -c name-of-your-deleted branch

问题已解决。

这有点绕圈子,但下面介绍如何解决

从Profile/Settings/Developer Settings/Personal Access Tokens(配置文件/设置/开发人员设置/个人访问令牌)中获取一个新的个人访问令牌(如果您还没有)

curl -u "username:PersonalAccessToken" -H "Accept: application/vnd.github.v3+json"  https://api.github.com/repos/RepoOwner/Repo/events
在响应中查找DeleteEvent;在那里你可以找到你删除的分支的孤立SHA

git fetch SHA
git switch -c name-of-your-deleted branch

问题已解决。

这并不能解决OP的问题。您所做的只是解释一种迂回的方法,以找出您当前签出的提交(无论它是否在分支上)。如果被删除的远程分支没有指向头部,这是没有帮助的