我已经重命名了一个本地分支,在远程上删除了相同的内容,将新名称推送到远程并设置跟踪如下:
git checkout my_branch
git branch -m my_branch feature/my_branch # rename
git push origin :my_branch # delete on remote
git push --set-upstream origin feature/my_branch # push and set tracking
我已经为20多个分支机构(通过脚本)完成了此操作,并且没有错误。
贡献者做了git fetch --prune
并更新了他们的本地分支(重命名并设置了新的跟踪分支)。
在(星期五)的第二天,没有任何新提交被推送,旧的origin/my_branch
在与origin/feature/my_branch
相同的提交上重新出现。没有新的提交和通过使用旧的跟踪分支推动某人可以完成。所以,我删除了origin/my_branch
。
今天(周末之后)origin/my_branch
再次出现在同一个旧提交(日期为星期四),origin/feature/my_branch
已经开启。
我不知道Git(垃圾收集器)如何以及为什么能够复活已删除的分支,但可能原因是 Gitblit (处理我的远程管理)方面?
答案 0 :(得分:0)
除非下列其中一项是负责任的
,否则没有任何意义Gitblit
中定义的默认分支,因此重新创建这些之间的共同点是某人(人或脚本)正在创建/推送此代码。
最有可能发生的是您团队中的其他人再次推动此分支。
至于git版本< 2,当你在没有指定远程或分支的情况下编写git pull/push
时,它将pull/push
所有分支。它在版本2上更新。
当" git push [$ there]"不说什么推,我们用过了 传统"匹配"到目前为止的语义(你的所有分支都被发送了 只要已经存在同名分支,就可以到远程控制台 在那边)。在Git 2.0中,默认值是" simple"语义, 推动:
只有当前分支到同名的分支,并且只有 当前分支设置为与该远程集成时 分支,如果你正在推送到同一个遥控器;或
只有当前分支到具有相同名称的分支,如果您 正在推送到一个不是你常去的地方的遥控器。
您可以使用配置变量" push.default"改变 这个。如果你是一个想要继续使用的老人 "匹配"语义,您可以将变量设置为"匹配",for 例。阅读文档以了解其他可能性。