2011-06-30 63 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