2010-04-20 122 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