git的哪些部分对名为“master”的分支有特殊/默认行为?

时间:2018-06-11 19:40:17

标签: git branch

鉴于no wide agreement上有the semantics of master,我们正在考虑在master服务器上根本没有名为origin的分支。

对于标准git命令行客户端内置的默认值,会产生什么后果?它如何将名为master的分支与其他分支(本地和远程分支)区别对待?

2 个答案:

答案 0 :(得分:3)

根据我对代码库的调查以及我对没有master分支的存储库的经验,我说你明白了。

最糟糕的情况是,一些不明确的边缘情况会导致命令失败而不是回退到master分支。

    默认情况下,
  • git clone设置master分支,但未找到远程引用并且未指定--bare标记(builtin/clone.c
  • 带有git fast export标记的
  • --anonymize单独留下master,因为它是一个众所周知的默认值,并且不会与任何内容进行通信(built-in/fast-export.c)< / LI>
  • 合并提交消息是根据目标分支定制的(即&#34;合并branchx&#34; vs.&#34;将branchx合并为分支&#34;)(builtin/fmt-merge-msg.c
  • git init使用master作为默认分支名称(builtin/init-db.c
  • 如果未指定分支名称,则
  • git submodule默认为master

(来自下方的git-remote.cfiles-backend.c输出实际上并未与master分支互动)

上面的列表是使用builtin/submodule--helper.c上的git grep编译的。{/ p>

# 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/

答案 1 :(得分:1)

master在某些地方用作默认值。

  • 空存储库中的第一个分支是在master分支中完成的。
  • 当y!= master
  • 时,合并提交消息为“合并分支x”或“将分支x合并为y”

但除了这种东西之外,一个名为master的分支并不是必需的。