【问题标题】:Git push is deleting branchesGit push 正在删除分支
【发布时间】:2021-06-25 01:41:42
【问题描述】:

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

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

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

【问题讨论】:

  • 例如,如果他们有一个配置说“在推送时默认使用--prune”,这可能是原因。
  • 您可以对需要保护的分支进行保护,但我不确定您是否可以保护任意分支。
  • 所以,看看 git push 手册:git-scm.com/docs/git-push。如果克隆是镜像,则每次推送操作都将使用隐含的--mirror 开关完成,这会强制推送所有内容并修剪本地删除的分支。
  • 我认为你最好的选择是教育,教这个程序员永远不要照着镜子工作。希望他们只会犯一次这个错误!

标签: git gitlab


【解决方案1】:

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

镜像意味着保持完全同步,因此当您从镜像推送时,默认情况下它有效地执行--prune。镜像不是用来作为沙盒的,它是用来进行备份或其他需要在其他地方完全复制 repo 的情况。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多