Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Git中获取主分支的默认值?_Git_Github_Branch - Fatal编程技术网

如何在Git中获取主分支的默认值?

如何在Git中获取主分支的默认值?,git,github,branch,Git,Github,Branch,简而言之,GitHub建议对默认分支使用main而不是master 写有弹性的Git别名时,我们如何才能得到这个名字?如何获得Git中“master”分支的默认值 我已经搜索过了,但是中没有一个解决方案能可靠地为我工作 如果我在分支feature,从develop分叉,它将返回我develop,而不是master(或main,其中develop是分叉) 那么,如何获得“主”分支名称呢 注意--问题可能是:git remote show origin为什么不向我显示master,而是develop

简而言之,GitHub建议对默认分支使用
main
而不是
master

写有弹性的Git别名时,我们如何才能得到这个名字?如何获得Git中“master”分支的默认值

我已经搜索过了,但是中没有一个解决方案能可靠地为我工作

如果我在分支
feature
,从
develop
分叉,它将返回我
develop
,而不是
master
(或
main
,其中
develop
是分叉)

那么,如何获得“主”分支名称呢

注意--问题可能是:
git remote show origin
为什么不向我显示
master
,而是
developer
,因为
总分支机构

回答您的问题有两个问题 你提到了
main
vs
master
。现在,这里的第一个问题是,目前实际上没有任何默认分支。有一些,但没有保证查询它的方法,因为“有点”部分是因为在这方面还没有达成共识:不是每个人都安装了Git 2.28或更高版本

也就是说,跑步:

git config --get init.defaultBranch
可能会在您自己的Git存储库中生成一些内容,如果生成了,并且您的Git是2.28或更高版本,那么在运行
Git init
时,您的Git将使用它作为未出生分支的默认名称。(另见。)

请注意,如果有人跑步:

git init --initial-branch=xyzzy
要创建新的空存储库,此新的空存储库中未出生的分支的名称将为
xyzy
,而不管是否存在
init.defaultBranch
设置,也不管其中可能包含什么。
--initial branch
选项也首次出现在Git 2.28中

头 您还询问了以下问题的答案:

问题可能是:
git remote show origin
为什么不显示我
master
,而是显示我
developer
,作为
总分支

git remote show
命令和
git ls remote
命令(try-it)通过调用其他git存储库并从中获取信息来工作。在讨论这些信息之前,让我们来看看<代码>头>代码>如何在您的知识库中工作。

Git存储库的核心是提交的集合。每个提交都用一个唯一的散列ID进行编号。所有Git系统都使用当前的特定算法SHA-1,但有计划切换到SHA-256-以根据提交的内容计算提交的散列ID,这样所有Git系统都会为相同的提交提供相同的散列ID

这就是Git在分发提交方面的工作方式。每个存储库都有自己提交的完整集合。当您交叉连接一对Git存储库时,例如您自己的和Git调用的系统上的一对,它们交换哈希ID。由于散列ID唯一地标识提交,发送方可以列出一个散列ID,接收方可以立即从中判断他是否已提交或需要提交。添加一些基于提交图结构的优化,我们就拥有了have/want协议交换所需的大部分内容

不过,每个Git都使用名称在自己的存储库中查找提交:分支名称、标记名称和其他此类名称。它们带有散列ID,可以找到某些特定的提交。然后,这些提交也会找到任何以前的提交

为了发送提交,Git fetch
配对中的发送Git列出了他的分支和标记以及其他类似的名称,以便接收Git能够确定要请求哪些提交(如果有的话)。您可以使用
git为每个ref
列出您自己的名称所有这些名称或某些选定子集。默认设置是列出所有以
refs/
开头的名称

上图中缺少一块,那就是特殊的名称
HEAD
。这个特殊的名称不是以
refs/
开头的,Git在内部以各种特殊的方式使用它,这通常是Git所称的符号ref,我们可以用
Git symbolic ref
来阅读它:

$git符号参考头
参考/主管/主管
这告诉我们,在这个特定的Git存储库中,当前的分支是名为
master
的分支。(分支名称都以
refs/heads/
开头;其他名称以其他基于
refs/
的前缀开头。)在非裸Git存储库中,我们通常使用的那种类型意味着有人运行了
Git checkout master
Git switch master

当我们使用
gitlsremote
连接到其他一些git时,他们的git将为我们的每个ref运行
git,列出他们的名字。但是它们在列表前面加上
HEAD
中的值,如果我们添加
--symref
选项,1我们可以通过两种方式获得它们的
HEAD

ref: refs/heads/master  HEAD
72c4083ddf91b489b7b7b812df67ee8842177d98        HEAD
71ca53e8125e36efbda17293c50027d31681a41f        refs/heads/maint
72c4083ddf91b489b7b7b812df67ee8842177d98        refs/heads/master
a3ce27912f980d787926b113d17f1f532e50162a        refs/heads/next
[snip]
这告诉我,他们的Git存储库将
master
作为他们的
HEAD
。第一条输出线直接说明了这一点;接下来的几行告诉我,它们的
参考/头/主
都是指提交
72c4083ddf91b489b7b7b812df67ee8842177d98
,这不太直接。2

git remote show
命令可以调用另一个git。3这意味着他们可以让他们列出他们的
头是哪个分支。当你看到:

  HEAD branch: develop
这仅仅意味着他们的Git将其
附加到分支名称
develope
。如果他们的存储库是非裸的,这意味着他们运行了
git checkout develope
git switch develope

如果它们有一个空的存储库,它们仍然可以得到相同的效果,使用
git--worktree=。。。签出
,o
git clone <url>
git clone -b somebranch <url>
git branch | grep -o -m1 "\b\(master\|main\)\b"