git 支持子分支的概念吗?即分支的分支
例如,一组教师在网络驱动器上有一个裸共享存储库(没有服务器 ssh 身份验证等),他们将其 pull 并推送到共享驱动器上,并在适当的时候 merge 到 master 中。
此 repo 将包括教师文件(例如已解决的解决方案)以及学生文件。
学生不应该克隆这个 repo,也不应该直接检查他们各自的教师分支,因为它包含答案。
但是 repo 可以包含每个类/主题的分支,其中只有跟踪上游更改的学生文件。学生然后分支这个分支来做他们的工作。老师将学生分支作为远程跟踪并 pull 入工作。
我最接近上述的是将一个分支克隆到一个单独的存储库中,并让学生在该存储库中分支。上述问题包括明显的数据重复(windows 对 git 中系统链接的支持很差)和额外的类/主题存储库必须随着上游更改而保持更新。
有什么想法可以更好地支持 Git/LibGit2 中的这个工作流吗?
最佳答案
git 中没有主分支的概念(master
是 git 默认提供的完全正常的分支)。您可以从 master
分支,您可以从任何其他分支分支,您可以从分支分支分支分支分支分支。
对于您的具体问题,git 没有分支可见性的概念。如果我克隆您的存储库,我就能很好地获得所有分支,您的本地存储库如何跟踪远程分支并不重要。
简而言之,如果您不希望人们拥有存储库可用的信息,就不要让他们克隆它。提供仅包含您需要的信息的不同远程存储库,并仅将相关信息推送到那里。
例如,我的 repo 有分支 public
、private-1
和 private-2
,我可以将所有分支推送到origin
(git push private-remote private-1
等),并有另一个远程设置,您严格只将 public
推送给它。
然后你的学生克隆公共(public)远程,从 public
分支,推送他们的更改和他们自己的分支,然后你可以从 public-remote
pull 出这些分支并推送进入您的 private-remote
。 Git 很好地支持多个远程。
关于Git 子分支或类似的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30051111/