GitHub已删除分支反复重现、重命名分支新旧并存问题求助
这种情况确实挺闹心的,我来帮你梳理几个最可能的原因和解决思路:
本地分支未清理,不小心重新推送到远程
你在GitHub网页上删除或重命名分支后,本地仓库里对应的旧分支可能还存在。如果之后你执行了git push origin <旧分支名>,就会把这个本地分支重新推回远程,导致已删除的分支“复活”,或者重命名后旧分支还留在远程。
解决办法:先在本地删除对应的旧分支,已合并的分支用git branch -d <分支名>,未合并的分支用git branch -D <分支名>;如果是重命名场景,本地重命名后推新分支到远程,还要手动删除远程旧分支:git push origin :<旧分支名>(注意冒号前面是空的)。团队成员的本地分支未同步,误推旧分支
如果是多人协作的仓库,其他队友的本地可能还保留着你已经删除或重命名的旧分支。当他们执行git push操作时,就会把这些旧分支重新推到远程仓库。
解决办法:提醒团队成员执行git fetch --prune,这个命令会清理本地缓存的远程分支信息,让本地的远程追踪分支和GitHub上的状态保持一致,之后再删除本地对应的旧分支。自动化工具/Action意外恢复分支
检查一下仓库里的GitHub Actions、Webhooks或者其他第三方自动化工具,有没有可能存在自动创建分支、备份分支的流程?比如某些CI脚本会自动生成测试分支,或者备份类工具会把旧分支恢复回来。
解决办法:查看仓库的「Actions」页面,检查所有运行的工作流,看看有没有涉及分支操作的步骤;也可以检查仓库的Webhooks设置,确认有没有外部服务在操作分支。本地未同步远程分支状态
如果你只在GitHub网页上操作了分支删除或重命名,但本地没有同步远程的变更,之后本地的旧分支信息还是旧的,一旦执行推送就会覆盖远程的状态。
解决办法:每次网页操作分支后,在本地执行git fetch origin,同步远程的最新分支状态,确保本地的分支列表和远程一致。
备注:内容来源于stack exchange,提问作者Bobby

