首页 > 解决方案 > 对于名为“master”的分支,git 的哪些部分具有特殊/默认行为?

问题描述

鉴于在的语义上没有广泛的共识,我们正在考虑在我们的服务器上根本没有命名分支。mastermasterorigin

git就标准命令行客户端内置的默认值而言,这会产生什么后果?它如何以master不同于其他分支的方式处理一个分支 - 本地和远程?

标签: gitbranch

解决方案


根据我对代码库的调查以及我对没有master分支的存储库的经验,我会说你很清楚。

在最坏的情况下,有几个边缘情况不明确会导致命令失败而不是退回到master分支。


  • git clonemaster当没有找到远程引用并且--bare未指定标志时默认设置一个分支( builtin/clone.c
  • git fast export单独使用--anonymize标志master,因为它是众所周知的默认值并且不传达任何内容(built-in/fast-export.c
  • 合并提交消息是根据目标分支定制的(即“Merge branchx”与“Merge branchx into branchy”)(builtin/fmt-merge-msg.c
  • git init用作master默认分支名称 ( builtin/init-db.c )
  • git submodule默认master为未指定分支名称时(builtin/submodule--helper.c

(下面的git-remote.candfiles-backend.c输出实际上并不与master分支交互)


上面的列表是使用git 存储库git grep上的以下内容编译的。

# Look for string literals within *.c files containing "master" 
# with 10 lines of context, excluding the t/ and contrib/ directories
$ git grep -C 10 -E -e \".*master.*\" -- :**/*.c :^t/ :^contrib/

推荐阅读