【发布时间】:2026-01-31 20:15:01
【问题描述】:
我有一个远程分支,我使用的是 develop_1。我所有的本地代码更改都已提交给它,但我的领导不小心删除了那个远程分支。
我的本地系统中有所有这些代码更改。现在我想将所有这些更改推送回新远程分支中的同一个 Git 存储库,例如 develop_2。
如何创建新分支,同步本地更改并将其推送到远程?
【问题讨论】:
标签: git github git-branch
我有一个远程分支,我使用的是 develop_1。我所有的本地代码更改都已提交给它,但我的领导不小心删除了那个远程分支。
我的本地系统中有所有这些代码更改。现在我想将所有这些更改推送回新远程分支中的同一个 Git 存储库,例如 develop_2。
如何创建新分支,同步本地更改并将其推送到远程?
【问题讨论】:
标签: git github git-branch
但是我的领导不小心删除了那个远程分支
如果这是在 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 会查看以恢复您之前的内容。
然后需要强制推送以在远程端恢复相同的历史记录。
但更简单的是,如果您的本地更改是在已推送的内容之上完成的,则您不必创建新分支:将现有分支推回。
【讨论】:
您是否已经分叉了远程仓库,然后将其克隆到本地?
如果您在本地分支上有代码更改说local_dev,并且您想推送到develop_2,那么命令如下:
git push -u origin local_dev:develop_2 然后针对主仓库提出拉取请求。
如果您可以直接访问远程仓库,则直接将更改推送到远程。无需提出拉取请求
【讨论】:
在您的本地分支 develop_1 中,您可以简单地创建新分支:
$ git checkout -b develop_2
推送您的更改,然后通过运行使您的本地存储库保持同步:
$ git fetch -p
-p 用于prune 删除本地分支,在这种情况下,旧的 develop_1 不再存在于远程。
【讨论】: