2010-04-20 123 views
0

所以,我想有使用Git以下集中設置的(每這些都是克隆):Git的多級克隆?

stable 
    development 
    developer1 
    developer2 
    developer3 

所以,我創建了穩定的資源庫

git --bare init 

做出的「發展」克隆

git clone ssh://host.name//path/to/stable/project.git development 

,並提出了 '開發者' 克隆

git clone ssh://host.name//path/to/development/project.git developer 

所以,現在,我做出改變,提交,然後我從我的開發人員帳戶

git commit --all 
git push 

推動和改變去發展克隆。

但現在,當我SSH到服務器,進入開發克隆目錄,並運行「git fetch」或「get pull」,我沒有看到更改。

所以,我該怎麼辦?我完全誤解了事情,做錯了什麼?我如何看到從「開發人員」克隆中推出的「開發」克隆中的更改?這在Mercurial中運行良好。

回答

4

我認爲你在Git和Mercurial之間混淆了術語和/或方法。我認爲你在尋找的只是你團隊的標準分支工作流程。一個存儲庫,多個分支與隱含的層次結構。

這些應該有所幫助:

請記住,所有這些都包含在一個存儲庫,但提供不同版本的相同的代碼。實施良好的分支和合並實踐,您將可以輕鬆維護個人,主線開發和主線穩定分支。這也將使維護過去的版本更容易,同時開發未來。


作爲跟進,到最後一個環節,你可能想看看gitflow,一個git的擴展,它提供了一個簡單的API給他建議的模式。


最後解決您在戰後初期都遇到的問題,在多個克隆所得到的是完全相同的信息,但在不同的命名的目錄。每個開發人員都應克隆存儲庫的副本,在開發分支上進行提交,然後合併這些更改並將其推送到集中託管的存儲庫。然後,當你準備好時,讓一個開發人員將開發分支合併到stable中,並將其推送到中央託管的存儲庫。

至於爲什麼你的更改沒有被反映出來,這是因爲你的服務器可能有一個完整的存儲庫克隆,而不是一個裸存儲庫。裸倉庫不顯示任何源文件,只有git內部。你不應該在這個目錄中執行任何git操作。所有工作都應該在克隆版本上完成。

對於一個剛接觸git和從不同實踐中切換不同DVCS的人來說,這一切似乎都非常複雜。我強烈建議最初使用免費的託管服務,如GitHub。有各種各樣的guides on GitHub,它們既可以幫助您使用git,也可以使用GitHub,您還可以獲得一個漂亮的Web UI。

+0

該教程幫助,我玩弄事情,並找出我想做的事情。我將使用中央存儲庫,爲'開發'和'開發者'創建克隆,並執行類似Rails的部署來釋放(而不是在我想發佈時推送到穩定)。 – 2010-04-20 23:08:02