每个git存储库包含所有信息的含义是什么?

时间:2012-06-06 08:39:43

标签: git github

我正在研究一个项目进行学习,现在我还有一组学生将为项目添加功能。由于我不相信他们的更改,我希望他们在与我不同的存储库上工作(但我是他们项目的一部分)。我的存储库位于github,我也希望它们与github一起使用。

正确的(github)方法是分叉项目。但github不允许我分叉我自己的项目。我尝试按照here描述手动执行我自己的项目,但是虽然我的原始项目有许多分支,但新项目只有一个分支。

我最终做的是创建(本地)一个新的远程存储库(第二个github存储库)并将我所有的本地存储库推送到新的远程存储库。

做这一切我对git的真正内部感到非常困惑。例如:当我克隆一个新的存储库时,我得到一个指向远程主分支的主分支。如果我然后将此本地存储库推送到新的远程存储库,则此远程存储库将只有一个分支!那么我们怎么能说每个git存储库包含相同的信息呢?我的路线有什么问题?

谢谢,很抱歉这篇长篇文章。

3 个答案:

答案 0 :(得分:1)

当您克隆git repo时,您将获得整个repo。与SVN之类的其他vcs不同,在这种情况下,您只获得一个工作目录,您将获得回购。您通常没有看到任何其他分支的原因是因为您没有本地跟踪分支(默认情况下只设置master。)您可以看到所有分支git branch -a并检出您想要的任何分支比如git checkout branch。如果你推动这个回购,现在你将有分支。

答案 1 :(得分:0)

你应该阅读Git书的“Git Branching”部分。它包含非常重要的信息,以了解git中的分支是什么,以及什么是远程分支。一旦你理解了这一点,你提出的问题将不再是无法回答的问题。

答案 2 :(得分:0)

再次阅读Git书中的“Distributed Git - Distributed Workflows”章节后,我发现我的“工作流程”不是我应该做的。由于我可以管理谁有权访问我的存储库,因此我不需要创建新项目。学生必须克隆我的存储库,进行更改,将它们上传到自己的存储库,然后我将它们拉出来并将我喜欢的更改合并到我的存储库中(也称为集成器 - 管理器工作流)。