使用Git的多级克隆?

时间:2010-04-20 01:41:09

标签: git dvcs

所以,我正在考虑使用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中运作良好。

1 个答案:

答案 0 :(得分:4)

我认为你在Git和Mercurial之间混淆了术语和/或方法。我认为您正在寻找的只是您团队的标准分支工作流程。一个存储库,多个具有隐含层次结构的分支。

这些应该有所帮助:

请记住,所有这些都包含在一个存储库中,但提供相同代码的不同版本。实施良好的分支和合并实践,您将能够轻松地维护个人,主线开发和主线稳定分支。这也将使您在开发未来时更容易维护过去的版本。


作为最后一个链接的后续内容,您可能需要查看gitflow,这是一个git扩展,为他建议的模型提供了一个简单的API。


最后,为了解决您在初始帖子中遇到的问题,多个克隆获得的信息完全相同,但名称不同。每个开发人员都应克隆存储库的副本,在开发分支上进行提交,然后将这些更改合并并推送到集中托管的存储库。然后,当您准备好时,让一个开发人员将开发分支合并到稳定版中,并将其推送到集中托管的存储库。

至于为什么您的更改没有得到反映,因为您可能在服务器上有完整的存储库克隆而不是裸存储库。裸存储库不显示任何源文件,只显示git内部。您不应该在此目录中执行任何git操作。所有工作都应该在克隆版本上完成。

对于那些刚接触git并从不同的DVCS转换不同实践的人来说,这一切似乎都非常复杂。我强烈建议您最初使用免费的托管服务,例如GitHub。有各种guides on GitHub可以帮助git和GitHub使用,而且你会得到一个不错的网页用户界面。