2009-12-22 64 views
32

我正在部署一個Django應用程序。 該應用程序構建在Github OS項目上。我有這個存儲在本地作爲主分支。如何將Git的特定分支推送到我的服務器?

$ git branch 
* master 
    customized - customized with local dev settings 
    webfaction_customized - with production server settings 

該項目的定製存儲在2個獨立的分支中。

我的計劃是在「定製」在本地執行我的自定義,然後合併這些更改爲「webfaction_customized」

然後這些變化推動對production_server純倉庫: 然後我會在克隆這個純倉庫production_server,更改克隆存儲庫中的設置並重新啓動fcgi進程。

第一個問題是,如果我試圖將分支推送到不是主服務器的服務器,我無法從裸存儲庫克隆,我發現這個問題。

所以我試圖推動主分支到服務器。

git push webfaction_server master 

但現在我發現我的分支都沒有上傳。

是否有某種方法可將特定分支推送到裸存儲庫並能夠克隆該分支?

OR

我需要調整自己的項目中,這樣主支是我的自定義和GitHub的項目是在GitHub的分支?

+1

是否有任何錯誤消息:

因此,當你在主分支上工作,要通過推動?你說你在推送非主分支時無法克隆裸倉庫。錯誤是什麼?當你推動主分支時有什麼錯誤嗎? – jonescb 2009-12-22 18:37:38

+0

'webfaction_server'實際配置爲遠程? 'git remote show'說什麼? – ebneter 2009-12-22 19:10:09

+0

這是您嘗試克隆非主分支時發生的錯誤 警告:遠程HEAD引用不存在的ref,無法結帳。 – BryanWheelock 2009-12-22 19:37:58

回答

1

您的推送命令似乎是正確的,假設webfaction_server遠程的名稱,而不僅僅是服務器地址。運行git help remote以瞭解有關從多個遙控器推入/拉出的更多信息。

0

您可能需要使用git-update-server-info更新服務器信息。此工具將使用最近的提交散列更新服務器上的HEAD信息,更新舊分支並使新分支可見。特別是,它會更新您的git存儲庫中的info/refs文件。您將需要在服務器上運行這一點,所以,也許像下面可能是有用的:

ssh webserver "cd /path/to/your/repository.git/ && git-update-server-info" 

這也許可以觸發更新,可能與一個post-commit鉤子,但還沒有嘗試過然而。

+0

嗨Egon。 update-server-info實際上做了什麼?你能解釋一下嗎? – 2009-12-23 11:11:01

1

消息Warning: Remote HEAD refers to nonexistent ref, unable to checkout.只會告訴您HEAD鏈接不存在,因此Git不知道要檢出到本地工作目錄的版本。

機會是production_server自己創建正確的分支機構。只要做一個git checkout <whatever-branch-you-want>並開始黑客入侵。

如果還不能解決問題,請在此處粘貼git branch -acat .git/config的輸出。

+0

我猜'git br'是https://github.com/larsbrinkhoff/git-scripts/blob/master/git-br – tashuhka 2016-12-19 09:51:59

+0

@tashuhka固定的特定命令,謝謝。不,對我來說,它只是'git分支'的別名。 – 2016-12-19 11:43:26

62

你會簡單地做:

git push origin webfaction_customized 

原屬是遠程的姓名和webfaction_customized是您的自定義分支。

git push origin master