2009-09-01 95 views
3

我瞭解基本知識以及工作流程如何工作以及不知道什麼。但是,假設我在我的Linux工作站上有一個本地存儲庫。現在,我還有一個位於遠程DC的VPS上的生產箱。如果我想將新代碼推出到生產箱,那麼最好的方法是什麼?我不想在盒子上有一個Git回購,它應該只有我的網頁代碼(PHP/MySQL)。澄清使用VCS如Git

如何將新的更改推送到生產箱而不發送所有文件?

+0

Git是DVCS而不是VCS - 這是它和svn之間的基本區別之一。 – 2009-09-01 20:01:37

+0

重複爲Git導出:http://stackoverflow.com/questions/160608/how-to-do-a-git-export-like-svn-export – 2009-09-01 20:06:29

回答

4

管理網頁內容的一種方法是在生產箱上創建一個「裸」存儲庫。這是一個沒有工作副本的存儲庫。當你想部署新的代碼時,你會推送到這個存儲庫來更新它。然後,登錄到生產箱並從裸存儲庫中將到您的實際部署目錄(這也是Git存儲庫)。

請注意,生產箱上的這些存儲庫都不需要被視爲「主」存儲庫;您可以在其他地方保留源代碼,並根據需要推送到生產環境。

您需要兩個存儲庫的原因是Git不支持直接將工作副本推送到存儲庫。 Git在歷史上允許你這樣做(通常會帶來意想不到的後果),但新版本強烈建議你避免以這種方式推動。

我使用上述技術來管理一些網站,它運作得非常好。一個好處是,如果我真的需要,我可以在生產機器上修補一些東西,在那裏提交,然後再把這個改變放到我的開發庫中。以這種方式進行的更改不太可能意外丟失。

+0

好吧,所以我不必打開任何端口上我的本地工作站的主要回購是正確的?我正在通過ssh從本地到「裸機」的生產回購,然後登錄到VPS的生產環境中,並從「裸機」回購庫中運行「拉」。 – luckytaxi 2009-09-01 20:12:46

+0

完全正確。 – 2009-09-01 20:20:14

1

所以我認爲你可能對存儲庫的工作方式有誤解,你的存儲庫可能在任何你想要的地方......它並不重要,它甚至可以在github或VPS上。基礎知識是,當你在工作時,你進行了提交(使用git,這些提交到本地存儲庫),當你準備應用這些更改時,你會「推送它們」,這會發送增量(只有對你的更改碼)。

當您準備在生產環境中進行更改時,您將登錄到服務器並從您的回購和部署中取出更改(可能包括重新啓動或遷移數據庫......通常這是通過參考作爲配方)

+0

我明白了,我只是需要幫助理解如何讓生產模仿HEAD中的內容。我不想在我的防火牆中打開端口,因此我可以從本地工作站獲取增量。 – luckytaxi 2009-09-01 20:13:45