如何恢复远程分支 git?

how to recover remote branch git?

有人不小心删除了我团队中的 alpha 分支。

我有远程分支origin/alpha。我无法使用 git ls-remote.

找到这个 origin/alpha 分支

我知道我最后一次提交的是 origin/alpha 分支上的 XYZ。我有那个分支的 SHA。

我正在尝试使用此 SHA 创建一个新分支。我使用 git 结帐 45430f8834b0ebda6e89668cc4a4ba3f6a2067a4.

之后我尝试使用 git checkout -b [NEW_BRANCH]

来检查新分支

我正在尝试 git 拉这个分支。但我遇到了以下错误

There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> alpha_recovered

知道如何恢复我在 git ls-remote 中看不到的远程分支。

由于您正在跟踪分支,因此只需推送:

git push origin origin/alpha:refs/heads/alpha

奇怪的语法是必要的,因为 push 的启发式用于填写 refnames 的拼写是......也许只是适当地小心猜测你想对远程仓库做什么。我自己对那个电话持观望态度,但无论如何,origin/alpha 解析为您的回购协议的 refs/remotes/origin/alpha 引用,即原点 refs/heads/alpha 的常规跟踪引用,但推送未设置为使将远程分支重置为像这样不寻常的东西是一件容易的事。我想这很公平,因为这不是一个常见的操作,所以最好在此处强制使用远程目标引用的完整拼写。

编辑:既然你有 sha,你也可以

git push origin 45430f8834b0ebda6e89668cc4a4ba3f6a2067a4:refs/heads/alpha