Git 子分支或类似的概念

标签 git

git 支持子分支的概念吗?即分支的分支

例如,一组教师在网络驱动器上有一个裸共享存储库(没有服务器 ssh 身份验证等),他们将其 pull 并推送到共享驱动器上,并在适当的时候 merge 到 master 中。

此 repo 将包括教师文件(例如已解决的解决方案)以及学生文件。

学生不应该克隆这个 repo,也不应该直接检查他们各自的教师分支,因为它包含答案。

但是 repo 可以包含每个类/主题的分支,其中只有跟踪上游更改的学生文件。学生然后分支这个分支来做他们的工作。老师将学生分支作为远程跟踪并 pull 入工作。

我最接近上述的是将一个分支克隆到一个单独的存储库中,并让学生在该存储库中分支。上述问题包括明显的数据重复(windows 对 git 中系统链接的支持很差)和额外的类/主题存储库必须随着上游更改而保持更新。

有什么想法可以更好地支持 Git/LibGit2 中的这个工作流吗?

最佳答案

git 中没有主分支的概念(master 是 git 默认提供的完全正常的分支)。您可以从 master 分支,您可以从任何其他分支分支,您可以从分支分支分支分支分支分支。

对于您的具体问题,git 没有分支可见性的概念。如果我克隆您的存储库,我就能很好地获得所有分支,您的本地存储库如何跟踪远程分支并不重要。

简而言之,如果您不希望人们拥有存储库可用的信息,就不要让他们克隆它。提供仅包含您需要的信息的不同远程存储库,并仅将相关信息推送到那里。

例如,我的 repo 有分支 publicprivate-1private-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/

相关文章:

git - 更改所有本地存储库的 Git URL

git - 如何使用 'git reset --hard HEAD' 恢复到之前的提交?

git - 如何在 Git 服务器上插入 SSH key (仅限 git-shell 访问)

git - 如何将 Azure Pipeline 定义 (Json) 保存到另一个 git 存储库

git - 获取当前分支的最后 N 次提交并将它们应用到另一个分支

git - 无法将更改推送到git中的远程分支

git - 什么使 git diff --diff-filter=CR 命令中的 C 和 R 过滤器?

git - 在intellij中重命名当前分支

windows - 无法创建 '/git/index.lock' : File exists - but it doesn't

本地和远程删除后git分支仍然存在