如何在Git中创建公共分支

时间:2015-04-17 18:26:05

标签: git git-branch public

我的团队正在增加对git的使用,我们希望开始使用公共分支,以便用户可以在那里进行集成/合并,而不是使用master。如何建立公共分支?

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

3 个答案:

答案 0 :(得分:3)

您必须像往常一样创建分支:

git checkout -b TheBranchToUse

之后你需要向其他人公开:

git push -u origin TheBranchToUse

答案 1 :(得分:1)

这取决于您希望为其提供对存储库的访问权限的开发人员组的范围。如果您正在谈论内部组,那么您在员工可访问的服务器上拥有的任何回购都足够了,因为分支机构将在那里。在这种情况下,来自@khmarbaise的建议是准确的。然后,您的用户可以获取该分支,从中分支,您可以通过像Jenkins等CI来相应地合并这些分支。

另一方面,如果您正在谈论开源,那么您可以在github,bitbucket或任何其他git主机上创建一个新的公共回购,并简单地将您的用户指向回购。用户将从此repo的主分支创建分支,并直接推送到master(yikes!)或提交他们自己的分支/ Pull请求。

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

答案 2 :(得分:0)

在教学环境中,我遇到了同样的问题:为其他教授和助教准备了练习和解决方案,并且还为学生提供了一个“公共分支”,供学生在练习时下载,然后在上课时间之后下载解决方案。我的解决方案使用github:

  • 与所有分支机构(包括公共分支机构)建立一个私有仓库
  • 克隆此存储库时,添加另一个远程目录,即公共存储库,并将其推送到公共分支

在当前安装中,我有:

$ 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

说enonces是公共分支,解决方案是私有分支,您可以在上面进行所有工作并创建文件。您可以通过使用非公共分支(如

)中的签出来更新公共分支
git checkout enonces
git checkout solutions -- *.pdf
git add .
git commit -m "update of solutions"
git push cours-public enonces

但是请注意,此解决方案并不完美:git无法处理文件的元数据,这意味着在此操作之后,它将假定它必须重新编译所有内容,因为LaTeX源文件和pdf被擦除了并恢复。除非您设置2个本地目录,否则您将遇到同样的问题:一个用于大多数时间都位于同一分支上的编译,一个专门用于公共目录和私有目录之间的交换,而您从未对其进行编译的目录