git HEAD和master(或main)的区别

nfeuvbwi  于 2023-04-04  发布在  Git
关注(0)|答案(3)|浏览(274)

Git中的HEADmaster有什么区别?
我在GitHub上做了一个项目的克隆,想把我的更改推送到远程。但是我应该推送到哪一个?

disbfnqx

disbfnqx1#

master是对分支末尾的引用。按照惯例,这通常是主集成分支,但它不一定是。(截至2020年7月发布的git v2.28.0,默认名称从master更改为main
HEAD实际上是一种特殊类型的引用,它指向另一个引用。它可能指向master/main,也可能不(它将指向当前 checkout 的分支)。如果你知道你想提交到master/main分支,那么就推到这个。
下面是一个可视化示例:

在你自己的仓库中,你可以通过运行以下命令来检查HEAD指向的位置:

$ git symbolic-ref HEAD
refs/heads/master

但是,找出remotes/origin/HEAD指向的位置更加棘手,因为它位于远程机器上。
有一个关于git引用here的很棒的小教程

dba5bblo

dba5bblo2#

简单的答案是HEAD是一个指针/标签,指向你当前所在分支的最近一次提交。master是初始化git仓库时创建的默认分支(例如git init)。
您可以删除master分支(例如git branch -D master)。您不能删除HEAD指针。

vlju58qv

vlju58qv3#

只需推送当前分支的更改

git push origin

它会将分支' B '的更改推送到' origin/B '。
如果你在master分支上,git会推送到origin/master
实际上,它会将所有更改推送到本地分支上,这些本地分支在origin上有匹配的远程分支。它由配置设置push.default控制。
另请参阅《Pro Git》手册中的推送RefSpecs。
您看到的是侧边栏,它代表了GitX projectExperimental GitX fork中远程存储库的所有refspecs。

HEAD将指定该远程的默认分支。
参见git remote set-head man page
不需要为远程服务器指定默认分支,但允许指定远程服务器的名称来代替特定分支。
例如,如果origin的默认分支设置为master,则可以在通常指定origin/master的位置指定origin

相关问题