首页 > 解决方案 > Git push 正在删除分支

问题描述

我是 git 新手,我不明白“git push”命令如何删除另一个分支。

如下所示,有两个分支。主和测试分支。这些分支是由两个不同的人创建的。但是,用户的“git push”删除了另一个用户创建的分支。有人可以解释这怎么可能以及需要做些什么来避免这种行为。作为记录,我使用 GitLab。

编辑:附加信息:正在推送的用户配置了镜像。

在此处输入图像描述

标签: gitgitlab

解决方案


将评论总结为答案:正如您在聊天中指出的那样,推送是从镜像完成的,这就是问题的原因。

镜像意味着要保持完全同步,所以当你从镜像推送时,--prune默认情况下它会有效。镜像并不意味着用作沙箱,它意味着用于备份或其他您希望在其他地方完整复制 repo 的情况。

从镜像克隆推送时,每个推送操作都将使用--mirror隐含的开关完成,这会强制推送所有内容并修剪本地删除的分支。(参考:git push 手册,寻找--mirror

可以通过以下方式防止此类问题:

  • 重要分支的分支保护(尽管这对所有分支都不实用);
  • 用户教育,确保用户不会将镜像视为沙箱;
  • 定期自动备份,以便在再次发生这种情况时能够恢复存储库。

推荐阅读