0

我正在为我的学习做一个项目,现在我还有一群学生将为该项目添加功能。由于我不信任他们的更改,我希望他们在与我不同的存储库上工作(但我是他们项目的一部分)。我的存储库在 github,我也希望他们与 github 一起工作。

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

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

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

谢谢,很抱歉这么长的帖子。

4

3 回答 3

1

当你克隆一个 git repo 时,你会得到整个 repo。不像其他像 SVN 这样的 vcs,在这种情况下你只会得到一个工作目录,你会得到 repo。您通常看不到任何其他分支的原因是因为您没有为它们设置本地跟踪分支(默认情况下仅设置了 master。)您可以查看所有分支git branch -a并签出您想要的任何分支git checkout branch。如果你推送这个 repo,现在你将拥有分支。

于 2012-06-06T08:44:27.127 回答
0

您应该阅读 Git 书籍的“ Git Branching ”部分。它包含非常重要的信息,可以帮助您了解 git 中的分支是什么,以及什么是远程分支。一旦你理解了这一点,你提出的问题就不应该再没有答案了。

于 2012-06-06T09:12:24.487 回答
0

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

于 2012-06-06T12:51:55.170 回答