您好,在将develop
分支合并到stage
分支时,我忘记在Gitlab上勾选删除源分支
选项。所以现在我有一个本地过时的develop
分支,以及最后一次将其合并到develop
之前合并(和删除)develop
分支至stage
分支的功能分支(本地)。我该如何完全恢复已删除的develop
版本?
我做了同样的事情。 我从一个Gitlab存储库中删除了别人的分支,但我没有本地副本,因此"git reflog"无法帮助我。 然后,我找到了另一个关于恢复Github已删除分支的答案Git: Recover deleted (remote) branch,它建议如果您使用了类似JIRA的东西,那么就可以链接到提交,并且链接中包含了需要在@diego-baranowski的答案中使用的提交SHA1 ID。
git checkout -b <branchname> <sha1>
在这里,“branchname”可以是您想要的任何名称,与删除的分支名称相同或是一个新名称,“sha1”是提交的长SHA1 ID。
或者,您也可以使用curl(或更好的Postman)列出GitLab服务器上的事件,并找到“deleted”事件,它也会有SHA1 ID(“提交自”值)。
curl --location --request GET 'https://gitlab.com/api/v4/events' --header 'Authorization: Bearer <your Personal Access Token here>
{
"id": xxxx,
"project_id": xxxx,
"action_name": "deleted",
"target_id": null,
"target_iid": null,
"target_type": null,
"author_id": xxxx,
"target_title": null,
"created_at": "2021-11-08T20:27:56.299Z",
"author": xxxx,
"push_data": {
"commit_count": 0,
"action": "removed",
"ref_type": "branch",
"commit_from": "<YOUR SHA1 ID IS HERE>",
"commit_to": null,
"ref": "<DELETED NAME HERE>",
"commit_title": null,
"ref_count": null
},
"author_username": "xxxx"
},
git reflog
git checkout -b <branchname> <sha1>
feature
分支,然后我创建了 PRfeature
=>develop
并进行了合并,接下来进行了另一个 PRdevelop
=>stage
,在这里不小心将远程的develop
分支删除了。 - Verthongit checkout -b shanumber
命令时,sha号码来自gitlab,我收到了以下错误信息:“Git通常不会创建以40个十六进制字符结尾的引用,因为当您只指定40个十六进制字符时,它将被忽略。这些引用可能是错误创建的。例如, git switch -c $br $(git rev-parse ...)其中"$br"为空,并创建了一个40个十六进制字符的引用。请检查这些引用,也许可以删除它们。通过运行“git config advice.objectNameWarning false”关闭此消息。 致命错误:名为'develop'的分支已经存在。 - Verthonfeature
到develop
再次提交PR并将其合并,而develop的代码应该与之前相同(在合并到stage分支之前删除develop),但是我不确定它是否会破坏历史记录或者会在将来将develop合并到stage分支时引发一些冲突? - Verthon