git push origin master:refs/heads/master这是做什么的

MrN*_*mus 14 git gitolite

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

git push origin master:refs/heads/master

它有什么作用 ?

我的猜测是与头部参考有关,不确定.有人可以向我解释一下吗?

Lil*_*ard 28

这个命令有三个部分:

git push
Run Code Online (Sandbox Code Playgroud)

这将调用push命令

origin
Run Code Online (Sandbox Code Playgroud)

这会命名您要推送的遥控器.这是存储在.git/config中的一个名为遥控器(您可以列出这些git remote),一个URL或.表示当前存储库的令牌.

master:refs/heads/master
Run Code Online (Sandbox Code Playgroud)

这称为"refspec",您可以在手册页中阅读git push.但总的来说,它由两部分组成,用冒号分隔.第一部分是本地分支的名称,第二部分是远程存储库(在本例中为origin)的分支的名称.这个特殊的refspec可以缩短为master:master.

一般来说,人们可以进一步缩短refspec.只是指定master为refspec相当于在遥控器上使用相同的名称,所以master就像master:master.


man*_*lds 5

master:refs/heads/master 是一个refspec。

refspecs 的形式 +<src>:<dst>

因此,此处master是您要推送到refs/heads/master远程(来源)上的refspec的本地仓库上的ref 。实际上master是缩写refs/heads/master

实际上,您可以这样做git push origin master,它将本地的master推送到远程的master。仅当您要推送到其他引用时,才需要显式指定目标引用。

同样也 git push具有默认行为,在您进行第一次推送并在遥控器上创建分支(master)之前,情况可能并非如此。因此,似乎您需要执行所提到的命令。请参阅手册