为什么Git分支在远程复活的另一天被删除?

时间:2015-06-01 11:26:57

标签: git gitblit

我已经重命名了一个本地分支,在远程上删除了相同的内容,将新名称推送到远程并设置跟踪如下:

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 (处理我的远程管理)方面?

1 个答案:

答案 0 :(得分:0)

除非下列其中一项是负责任的

,否则没有任何意义
  • 团队中的其他人再次推动此分支
  • 外部代码(hook,script,cron等)正在创建此分支。
  • 这是Gitblit中定义的默认分支,因此重新创建

这些之间的共同点是某人(人或脚本)正在创建/推送此代码。

最有可能发生的是您团队中的其他人再次推动此分支。

至于git版本< 2,当你在没有指定远程或分支的情况下编写git pull/push时,它将pull/push所有分支。它在版本2上更新。

Git v2.0发行说明

  

当" git push [$ there]"不说什么推,我们用过了   传统"匹配"到目前为止的语义(你的所有分支都被发送了   只要已经存在同名分支,就可以到远程控制台   在那边)。在Git 2.0中,默认值是" simple"语义,   推动:

     
      
  • 只有当前分支到同名的分支,并且只有   当前分支设置为与该远程集成时   分支,如果你正在推送到同一个遥控器;或

  •   
  • 只有当前分支到具有相同名称的分支,如果您   正在推送到一个不是你常去的地方的遥控器。

  •   
     

您可以使用配置变量" push.default"改变   这个。如果你是一个想要继续使用的老人   "匹配"语义,您可以将变量设置为"匹配",for   例。阅读文档以了解其他可能性。