如何在 Git 中创建 Public 分支

How to Create Public Branch in Git

我的团队正在增加 git 的使用,我们想开始使用 public 分支,这样用户就可以在那里而不是 master 执行他们的 integrations/merges。如何创建 public 分支?

是的,我是个菜鸟。谢谢你的帮助! :D

您必须照常创建分支:

git checkout -b TheBranchToUse

之后你需要把它public发给其他人:

git push -u origin TheBranchToUse

这取决于您要向其授予存储库访问权限的开发人员组的范围。如果您谈论的是内部组,那么您在员工可以访问的服务器上拥有的任何存储库就足够了,因为分支机构就在那里。在这种情况下,@khmarbaise 的建议是准确的。然后,您的用户可以获取该分支,从中分支,您可以通过 CI 像 Jenkins 等

相应地合并这些分支

另一方面,如果您谈论的是开源,那么您可以在 github、bitbucket 或任何其他 git 主机上创建一个新的 public 存储库,并简单地将您的用户指向回购协议。用户将从这个 repo 的 master 分支创建分支,然后直接推送到 master(哎呀!)或提交他们自己的 branches/Pull 请求。

如果您打算施加特定于分支的权限,则需要服务器端授权层,例如 Gitolite(或其他:http://alternativeto.net/software/gitolite/)。使用 Github,可以控制对一个存储库的写入权限,允许用户创建自己的分支,并合并正在提交的合并请求。

我在教学环境中遇到了同样的问题:有其他教授和助教的练习和解决方案,还有一个“public分支”供学生下载第一个练习,然后再下载解决方案session 小时。我的解决方案使用 github:

  • 设置一个包含所有分支的私人仓库,包括 public 一个
  • 当你克隆这个 repo 时,添加另一个远程的 public repo,然后推送到 public 分支

在当前安装中,我有:

$ git remote
cours
cours-public
$ git remote get-url cours
git@github.com:YannickChevalier/programmation-en-C.git
$ git remote get-url cours-public
git@github.com:YannickChevalier/programmation-en-C-CUPGE.git
$ git git branch -a
  configuration
  enonces
* enseignants
  solutions
  solutionsprof

假设 enoces 是 public 分支,solutions 是您执行所有工作和创建文件的私有分支。您使用 non-public 分支的结帐更新 public 分支,例如

git checkout enonces
git checkout solutions -- *.pdf
git add .
git commit -m "update of solutions"
git push cours-public enonces

但是请注意,此解决方案并不完美:git 不处理文件的 meta-data,这意味着在此操作之后,它将假设它必须重新编译所有内容,因为LaTeX 源文件和 pdf 被擦除和恢复。除非您设置 2 个本地目录,否则您将遇到同样的问题:一个用于大部分时间停留在同一分支上的编译,另一个专门用于 public 和私有目录之间的交换,以及你永远不会编译。