【问题标题】:Git remote branch got deleted, how to resync local changes with new branchGit远程分支被删除,如何将本地更改与新分支重新同步
【发布时间】:2026-01-31 20:15:01
【问题描述】:

我有一个远程分支,我使用的是 develop_1。我所有的本地代码更改都已提交给它,但我的领导不小心删除了那个远程分支。

我的本​​地系统中有所有这些代码更改。现在我想将所有这些更改推送回新远程分支中的同一个 Git 存储库,例如 develop_2

如何创建新分支,同步本地更改并将其推送到远程?

【问题讨论】:

    标签: git github git-branch


    【解决方案1】:

    但是我的领导不小心删除了那个远程分支

    如果这是在 GitHub 上,您可以使用“poor man's reflog”取回远程分支的 SHA1,也就是 push events (GitHub Events API) .
    请参阅“Does github remember commit IDs?”:在master 分支上查找任何最近的推送事件:you can then fetch that commit(及其相关历史记录)返回到您的本地存储库。
    如果没有,GitHub support 会查看以恢复您之前的内容。

    然后需要强制推送以在远程端恢复相同的历史记录。

    但更简单的是,如果您的本地更改是在已推送的内容之上完成的,则您不必创建新分支:将现有分支推回。

    【讨论】:

      【解决方案2】:

      您是否已经分叉了远程仓库,然后将其克隆到本地?

      如果您在本地分支上有代码更改说local_dev,并且您想推送到develop_2,那么命令如下:

      git push -u origin local_dev:develop_2 然后针对主仓库提出拉取请求。

      如果您可以直接访问远程仓库,则直接将更改推送到远程。无需提出拉取请求

      【讨论】:

        【解决方案3】:

        在您的本地分支 develop_1 中,您可以简单地创建新分支:

        $ git checkout -b develop_2
        

        推送您的更改,然后通过运行使您的本地存储库保持同步:

        $ git fetch -p
        

        -p 用于prune 删除本地分支,在这种情况下,旧的 develop_1 不再存在于远程。

        【讨论】: