2011-09-27 81 views
5

情況

我從來沒有使用git或任何其他版本控制。現在我已經有了一個web項目,需要有一個穩定的版本和一個開發版本,它們都在不同的目錄中運行在同一臺服務器上。基本的git理解問題

  • 穩定:/var/www/afod/afod
  • 發展:/var/www/afod_dev/afod

現在我想使用git同步從DEV-版本變化到穩定版本,並根據我從來沒有使用之前VC-系統我似乎沒有得到如何做到這一點。

我做了什麼直到現在

/var/www/afod/afod創建一個Git倉庫,並通過克隆到dev目錄:

cd /var/www/afod_dev/afod 
git clone /var/www/afod/afod 

現在我有2個庫,我想保持同步在穩定版本一側使用git pull。

問題

我已經有2個分支,網絡和開發。但是看起來git會從兩個分支中獲得穩定版本的同步。但我只想將更改同步到穩定版本,我已經合併到開發版本中的Web分支。

總混亂

我希望我能以某種方式指出我的問題。我似乎有一個關於git如何工作的基本理解問題,但它似乎是正確的軟件來做我想做的事情。我基本上想要有一個分支自動同步到穩定版本和我融入其中的其他分支。但是,開發必須位於不同於穩定版本的目錄中。

關於比利月亮

那麼第一個答案,穩定和開發都在以不同的Apache虛擬服務器不同的域名託管。開發人員在瀏覽網站時看到的目錄中的開發分支是沒有任何意義的。

所以我的想法是克隆存儲庫,然後同步這些。

我在這裏弄錯了什麼嗎?你如何處理這種配置?

+0

什麼是git做的看起來像「git pull」是從兩個分支同步穩定? – Schwern

+0

歡迎來到堆棧溢出,這是一個很好的第一個問題;最好直接評論一個答案,而不是將評論作爲對你的問題的編輯(正如你對比利的答案所做的那樣)。 – CharlesB

回答

4

分行

我認爲你是在正確的軌道上,但llittle混淆的分支的想法。您可以將分支可視化爲樹上的兩個分支。兩者都有相同的主幹,來源,但提示是不同的。 區別在於相同的代碼庫,可以是次要的或主要的。當你運行命令git checkout <branch_name>時,你告訴git你想讓樹的不同提示被激活,被複制到工作目錄

就你而言,一個分支有開發代碼,另一個分支有穩定的代碼。要將dev分支中的代碼分支到web分支中,請使用git merge <branch_to_pull_in>這將這兩個分支的提示結合在一起,因此它們的內容相同。有關分支機構的更多信息,Here是一個通用的非Git頁面。

可能的解決方案

下面是可以爲你工作的解決方案。還有其他可能的工作流程,但這是最簡單的一個。

將您的開發庫克隆到/var/www/afod/afod。比從/var/www/afod/afod運行git checkout web和從您的devfolder,確保您在dev分支。 git branch應該有這樣一行* dev

您現在將同一個存儲庫的兩個不同分支簽出到不同的子文件夾中。像你一樣在開發中做你的工作。一旦你覺得它是穩定的,從你的開發文件夾內運行git checkout web。比,git merge dev。這會將這些更改合併到您的web分支中。現在從/var/www/afod/afod運行git pull。這將把你的chnage放入生產服務器。 dev和網絡將被拉過來,但只有檢出將在您的工作目錄中。

如果您想再次在開發分支中工作,請從dev文件夾中運行git checkout dev

0

我認爲穩定和發展應該是分支機構,而不是獨立的存儲庫。

這裏是基本的git一個偉大的教程,以及如何簡單的工作流可以工作:http://www.ralfebert.de/tutorials/git/

+0

OP想要在同一個存儲庫中擁有兩個不同的克隆。 – CharlesB