2011-06-30 95 views
15

我已经安装了gitolite(本地现在,试验),它似乎工作,除了新的仓库没有跟踪git克隆后的默认远程。如果我没有记错的话,当我从github.com克隆一个仓库时,它已经能够推拉。gitolite:新库的默认远程工具

这里是我的尝试:

$ git clone [email protected]:sandbox 
Cloning into sandbox... 
warning: You appear to have cloned an empty repository. 
$ echo "A" > README 
$ git add README 
$ git commit README -m 'test' 
$ git push 
No refs in common and none specified; doing nothing. 
Perhaps you should specify a branch such as 'master'. 
fatal: The remote end hung up unexpectedly 
error: failed to push some refs to '[email protected]:sandbox' 

当我试图把明确的一切工作:

$ git push origin master 
Counting objects: 6, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (2/2), done. 
Writing objects: 100% (6/6), 426 bytes, done. 
Total 6 (delta 0), reused 0 (delta 0) 
To [email protected]:sandbox 
* [new branch]  master -> master 

是这个额外步骤真正需要的?可以默认设置?在github上,它不是?

谢谢

+0

据我所知,gitosis不推荐用于新的存储库/服务器。更好地使用gitolite。 –

+0

糟糕,我实际上使用的是gitolite,但在这个问题上犯了一个错误。现在已修复。 – stivlo

回答

22

第一混帐推总是需要指定要推分支。

git push -u origin master 

那么接下来的推可以做到的,属于同一分支,如你意:

git push 

git push man page

特殊的Refspec :(或+:允许非快速更新)指示git推送“匹配”分支:对于存在于本地端的每个分支,如果rem上已存在相同名称的分支,则更新远程端ote方。
如果没有找到明确的refspec,这是默认的操作模式

既然你已经克隆了一个空仓库,第一推没有找到任何匹配的分支里(有没有上游回购“origin”)

注:参见“What is the result of git push origin?”:

对GIT中推默认的策略将与GIT 2.0(或也许git1.9)改变

推送新的模式, “simple”,这是我是介于“current”和“upstream”之间的一个交叉点。
git push”没有任何refspec将只有当它被设置为在那里跟踪具有相同名称的分支时,才将当前分支推送到远程存储库中的相同名称。
当未配置push.default时,计划将使此模式成为新的默认值。

git push -u origin master

所以,-u--set-upstream-to)这里重要的(不只是推分支具有相同名称的远程“origin”,但它的远程跟踪分支。

+0

谢谢,所以在此期间我会习惯它。所以可能github为你初始化回购。我会在第一次检查虚拟回购。 – stivlo

0

你可以使用git branch --set-upstream命令,例如。:
git branch --set-upstream develop origin/develop