Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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推送原始主机:refs/heads/master这是做什么的_Git_Gitolite - Fatal编程技术网

git推送原始主机:refs/heads/master这是做什么的

git推送原始主机:refs/heads/master这是做什么的,git,gitolite,Git,Gitolite,当我在gitolite存储库上创建一个新的repo时,在开始将代码推送到服务器之前,我必须输入以下命令 git推送原点母版:refs/heads/master 它有什么作用 我的猜测是,这与头部参考不确定有关。有人能给我解释一下吗?它为你设置了跟踪。您可以使用以下速记: git push origin master 冒号后面的部分是远程回购上分支的名称。如果省略它,git会假定您想要相同的名称 希望这能有所帮助。git push的默认行为,也就是您所说的“将代码推送到服务器”,就是只推送到远程

当我在gitolite存储库上创建一个新的repo时,在开始将代码推送到服务器之前,我必须输入以下命令

git推送原点母版:refs/heads/master

它有什么作用


我的猜测是,这与头部参考不确定有关。有人能给我解释一下吗?

它为你设置了跟踪。您可以使用以下速记:

git push origin master
冒号后面的部分是远程回购上分支的名称。如果省略它,git会假定您想要相同的名称


希望这能有所帮助。

git push的默认行为,也就是您所说的“将代码推送到服务器”,就是只推送到远程服务器上具有匹配分支(按名称)的本地分支。当你创建一个新的回购协议时,它没有分支,所以一个简单的
git推送将不会推送任何东西。必须首先按名称显式推送分支。此后,默认行为将按预期工作

另外,实际上,您只需推送原始主机即可。它所做的是将您的本地master作为master推送到gitolite repo,因为您没有指定其他名称。如果您说的是
git-push-origin-master:foo
,那么您在本地称为“master”的分支在gitolite上称为“foo”


p.p.S.您可以在“无”、“匹配”(默认)、“跟踪”/“上游”和“当前”之间切换默认推送行为。请参阅上的“push.default”设置。

此命令分为三个部分:

git push
这将调用push命令

origin
这将命名要推送到的遥控器。这是存储在.git/config(您可以用
git remote
列出)中的一个命名远程、URL或表示当前存储库的令牌

master:refs/heads/master
这称为“refspec”,您可以在git push的手册页中阅读它。但一般来说,它由两部分组成,由冒号分隔。第一部分是本地分支的名称,第二部分是远程存储库上分支的名称(在本例中为
origin
)。这个特定的refspec可以缩短为
master:master


通常,可以进一步缩短参照规范。仅将
master
指定为refspec相当于在远程设备上使用相同的名称,因此
master
master:master
master:refs/heads/master
是refspec

refspec
的格式为
+:

因此这里master是本地repo上的ref,您正在推送到远程(原点)上的
refs/heads/master
refspec
master
实际上是refs/heads/master的缩写

事实上,您只需执行git push origin master
,它就可以将本地的master推送到远程的master。只有当您想要推送到另一个ref时,才需要显式指定目标ref


另外,
git push
也有默认行为,在您第一次推送并在远程设备上创建分支(master)之前可能不会出现这种情况。所以看起来你需要执行你提到的命令。请参阅手册

谢谢您的解释。我只想在这里添加一个指向Refspec上git文档的链接:还想添加一个有用的工具,用于将不同的分支、命名空间甚至repo推送到远程分支上。我发现,在使用Jekyll编译以支持插件后,这对于自动化将静态资产推送到gh页面的过程非常有用。