2014-01-19 154 views
2

我取origin這樣的:推送所有本地分支機構其它遠程Git中

git fetch origin 

這將讓所有分支機構爲masterdev

然後我把它推到另一個遠程mirror-server

git push mirror-server master 

或者,基本上git push --all mirror-server

但是這並不推動我的dev分支到mirror-server,只有master分支被推。

錯誤,我得到:

error: src refspec dev does not match any. 

如圖所示我想:

git push -u mirror-server dev 
git push --all 

我也試着開關CURENT分支,然後推。沒有運氣!只有一次我得到的東西,它是這樣的:Git基本上就是把所有的文件上devmaster和合並文件...

基本上我需要拉從origin變化,然後按各分公司所有其他遙控器。 (如果您更改URL或任何其他資料庫),以~/local-repos

+0

'![遠程拒絕]主控(刪除當前分支禁止)' – xangr

+0

更清楚的是,當我拉起源時,本地文件夾中沒有數據,並且在鏡像服務器上也沒有主和開發分支。鏡像服務器只創建主分支,但當我想推動開發分支它會引發錯誤。我無法在鏡像服務器上自動創建開發分支。目前只有起源有開發分支。我想同步。如果origin有一個新的分支,那麼鏡像服務器必須擁有它 – xangr

+0

@Palec,我會遵循它,但你能看到這個頁面:'https://github.com/nhnc-nginx/apache2nginx'。如你所見,這有兩個分支。 'master'和'gh-pages'。我可以執行'git fetch',然後將主服務器而不是'gh-pages'推送到我的其他服務器。我現在會嘗試新的測試。 – xangr

回答

2

命令序列克隆你的GitHub庫,在~/remote-repos.git初始化一個空庫,並從推到~/local-repos所有~/remote-repos.git分支機構。

git clone 'https://github.com/nhnc-nginx/apache2nginx' ~/local-repos 
git init --bare ~/remote-repos.git 
cd ~/local-repos 
git remote add mirror-server ~/remote-repos.git 
git push --mirror mirror-server 

後來你在~/local-reposgit fetch origin~/local-repos執行更新跟蹤分支(並獲得新的)。您可以使用git push --mirror mirror-server再次將所有內容鏡像到~/remote-repos.git。如果您想推送一個分支(例如origin/gh-pages),請使用git push mirror-server origin/gh-pages

請注意,https://github.com/nhnc-nginx/apache2nginx遠程被自動命名爲origingit fetch originorigin存儲庫中提取可訪問的對象,並將分支存儲爲跟蹤分支。跟蹤分支以遠程名稱作爲前綴(在這種情況下爲origin)。如果執行git checkout gh-pages並且不存在gh-pages分支,則在執行結帳之前,Git執行git branch --track gh-pages origin/gh-pages,該分支將創建上游設置爲origin/gh-pagesgh-pages分支。

這可能是您的Git報告錯誤的來源。你只提取origin/gh-pages並試圖推送不存在的gh-pages分支。作爲結帳的一部分,gh-pages已創建,因此請繼續工作。

另請注意,您正在創建本地存儲庫的鏡像,而不是origin。如果你想鏡像你的GitHub倉庫,你應該在git remote add origin 'https://github.com/nhnc-nginx/apache2nginx'剛創建的空鏡子裏執行git fetch origin